Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Ruby on Rails для начинающих

Покупка
Артикул: 712474.01.99
Доступ онлайн
1 499 ₽
В корзину
Ruby on Rails - один из наиболее популярных фреймворков для разработки веб-приложений, но его изучение и использование - не самая простая задача. Эта книга поможет вам решить ее независимо от того, имеете ли вы опыт веб-разработки вообще и Rails в частности. Известный автор и ведущий разработчик Rails Майкл Хартл познакомит вас с Rails на примере разработки трех приложений. Автор рассказывает не только о Rails, но также описывает основы Ruby, HTML, CSS и SQL, которые пригодятся вам при разработке своих веб-приложений. Начиная обсуждение каждой новой методики, Хартл доходчиво объясняет, как она помогает решать практические задачи, а затем демонстрирует ее применение в программном коде, достаточно простом и понятном. Издание предназначено для всех программистов, желающих изучить Ruby on Rails.
Хартл, М. Ruby on Rails для начинающих / М. Хартл ; пер. с анг. А. Разуваева. - Москва : ДМК Пресс, 2017. - 572 с. - ISBN 978-5-97060-429-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028092 (дата обращения: 28.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Майкл Хартл

Ruby on Rails для начинающих

Michael Hartl

Ruby on Rails Tutorial 

Learn Web Development with Rails

  Third Edition

 
New York • Boston • Indianapolis • San Francisco
Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • Sydney • Tokyo • Singapore • Mexico City

Майкл Хартл

Ruby on Rails для начинающих

Изучаем разработку веб-приложений  
на основе Rails

Москва, 2017

УДК 004.438Ruby on Rails
ББК 32.973.22
X22

Хартл М.

X22 Ruby on Rails для начинающих / пер. с анг. А. Разуваева. – М.: ДМК Пресс,

2017. – 572 с.: ил.

ISBN 978-5-97060-429-8

Ruby on Rails – один из наиболее популярных фреймворков для разработки веб-приложений,

но его изучение и использование – не самая простая задача. Эта книга поможет вам решить ее
независимо от того, имеете ли вы опыт веб-разработки вообще и Rails в частности. Известный
автор и ведущий разработчик Rails Майкл Хартл познакомит вас с Rails на примере разработки
трех приложений. Автор рассказывает не только о Rails, но также описывает основы Ruby, HTML,
CSS и SQL, которые пригодятся вам при разработке своих веб-приложений. Начиная обсуждение
каждой новой методики, Хартл доходчиво объясняет, как она помогает решать практические задачи, а затем демонстрирует ее применение в программном коде, достаточно простом и понятном.

Издание предназначено для всех программистов, желающих изучить Ruby on Rails.

УДК 004.438Ruby on Rails
ББК 32.973.22

Authorized translation from the English language edition, entitled Ruby on Rails Tutorial. Learn

Web Development with Rails. 3rd Edition; ISBN 9780134077703; Ьу Michael Hartl; puhlished Ьу
Pearson Education, Inc., puhlishing as Addison-Wesley Professional. Copyright © 2015 Ьу Pearson
Education, Inc.

All rights reserved. No part of this book may Ье reproduced or transmitted in any form or Ьу any

means, electronic or mechanical, including photocopying, recording or Ьу any information storage
retrieval system, without permission from PearsonEducation, lnc. RUSSIAN language edition
puhlished Ьу DMK PUВLISHERS. Copyright © 2016.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой

бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность

технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

ISBN 978-0-13-407770-3 (анг.) 
Copyright © 2015 Michael Hartl

ISBN 978-5-97060-429-8 (рус.) 
© Перевод, оформление, издание, ДМК Пресс, 2017

Содержание

Предисловие..................................................................12
Благодарности................................................................13
Об.авторе.......................................................................14
Авторские.права.и.лицензия...............................................15

Глава.1..От.нуля.к.развертыванию......................................16
1.1. Введение ..................................................................................................................................18
1.1.1. Необходимая квалификация ...................................................................................19
1.1.2. Типографские соглашения ........................................................................................20
1.2. За работу ..................................................................................................................................22
1.2.1. Среда разработки .........................................................................................................23
1.2.2. Установка Rails ..............................................................................................................25
1.3. Первое приложение .............................................................................................................26
1.3.1. Компоновщик ................................................................................................................30
1.3.2. Сервер Rails ....................................................................................................................33
1.3.3. Модель-представление-контроллер (MVC) .......................................................35
1.3.4. Hello, world! ....................................................................................................................38
1.4. Управление версиями с Git ...............................................................................................39
1.4.1. Установка и настройка................................................................................................41
1.4.2. Что дает использование репозитория Git? .........................................................42
1.4.3. Bitbucket ..........................................................................................................................43
1.4.4. Ветвление, редактирование, фиксация, слияние ..............................................47
1.5. Развертывание .......................................................................................................................50
1.5.1. Установка Heroku .........................................................................................................52
1.5.2. Развертывание на Heroku, шаг первый ................................................................53
1.5.3. Развертывание на Heroku, шаг второй .................................................................54
1.5.4. Команды Heroku ...........................................................................................................54
1.6. Заключение .............................................................................................................................55
1.6.1. Что мы узнали в этой главе ......................................................................................55
1.7. Упражнения ............................................................................................................................56

Глава.2..Мини-приложение...............................................58
2.1. Проектирование приложения ..........................................................................................58
2.1.1. Модель пользователей ...............................................................................................61
2.1.2. Модель микросообщений ..........................................................................................61
2.2. Ресурс Users ...........................................................................................................................61
2.2.1. Обзор пользователей ..................................................................................................64
2.2.2. MVC в действии ............................................................................................................67

 Содержание

2.2.3. Недостатки ресурса Users .........................................................................................74
2.3. Ресурс Microposts .................................................................................................................74
2.3.1. Микрообзор микросообщений ................................................................................74
2.3.2. Ограничение размеров микросообщений ............................................................77
2.3.3. Принадлежность множества микросообщений одному пользователю.....79
2.3.4. Иерархия наследования .............................................................................................81
2.3.5. Развертывание мини-приложения .........................................................................83
2.4. Заключение .............................................................................................................................83
2.4.1. Что мы узнали в этой главе ......................................................................................84
2.5. Упражнения ............................................................................................................................85

Глава.3..В.основном.статические.страницы..........................87
3.1. Установка учебного приложения ....................................................................................87
3.2. Статические страницы........................................................................................................90
3.2.1. Рождение статических страниц ..............................................................................91
3.2.2. Доработка статических страниц .............................................................................97
3.3. Начало работы с тестированием .....................................................................................99
3.3.1. Наши первые тесты .................................................................................................. 100
3.3.2. Красный ........................................................................................................................ 102
3.3.3. Зеленый ........................................................................................................................ 103
3.3.4. Рефакторинг ............................................................................................................... 105
3.4. Слегка динамические страницы ................................................................................... 105
3.4.1. Тестирование заголовков (КРАСНЫЙ)  .......................................................... 106
3.4.2. Добавление заголовков страниц (ЗЕЛЕНЫЙ)  ............................................ 108
3.4.3. Макеты и встроенный код на Ruby (рефакторинг) ...................................... 110
3.4.4. Установка корневого маршрута............................................................................ 115
3.5. Заключение .......................................................................................................................... 116
3.5.1. Что мы изучили в этой главе................................................................................. 116
3.6. Упражнения ......................................................................................................................... 117
3.7. Продвинутые настройки тестирования ..................................................................... 118
3.7.1. Средства составления отчетов minitest ............................................................. 119
3.7.2. Настраиваем backtrace ............................................................................................ 120
3.7.3. Автоматизация тестирования с помощью Guard ........................................... 120

Глава.4..Ruby.со.вкусом.Rails...........................................126
4.1. Мотивация ........................................................................................................................... 126
4.2. Строки и методы ................................................................................................................ 130
4.2.1. Комментарии .............................................................................................................. 131
4.2.2. Строки ........................................................................................................................... 131
4.2.3. Объекты и передача сообщений........................................................................... 134
4.2.4. Определение методов .............................................................................................. 136

Содержание  7

4.2.5. Еще раз о вспомогательной функции заголовка ............................................ 137
4.3. Другие структуры данных .............................................................................................. 138
4.3.1. Массивы и диапазоны ............................................................................................. 138
4.3.2. Блоки ............................................................................................................................. 142
4.3.3. Хэши и символы ........................................................................................................ 144
4.3.4. Еще раз о CSS ............................................................................................................. 147
4.4. Ruby-классы ........................................................................................................................ 149
4.4.1. Конструкторы ............................................................................................................. 149
4.4.2. Наследование классов ............................................................................................. 150
4.4.3. Изменение встроенных классов ........................................................................... 153
4.4.4. Класс контроллера .................................................................................................... 154
4.4.5. Класс User .................................................................................................................... 156
4.5. Заключение .......................................................................................................................... 158
4.5.1. Что мы узнали в этой главе ................................................................................... 158
4.6. Упражнения ......................................................................................................................... 159

Глава.5..Заполнение.макета............................................160
5.1. Добавление некоторых структур ................................................................................. 160
5.1.1. Навигация по сайту .................................................................................................. 161
5.1.2. Bootstrap и собственные стили CSS ................................................................... 166
5.1.3. Частичные шаблоны ................................................................................................ 173
5.2. Sass и конвейер ресурсов ................................................................................................ 177
5.2.1. Конвейер ресурсов .................................................................................................... 177
5.2.2. Синтаксически безупречные таблицы стилей ................................................ 180
5.3. Ссылки в макете................................................................................................................. 186
5.3.1. Страница Contact ...................................................................................................... 187
5.3.2. Маршруты в Rails ...................................................................................................... 188
5.3.3. Использование именованных маршрутов ........................................................ 190
5.3.4. Тесты для проверки ссылок в макете ................................................................. 191
5.4. Регистрация пользователей: первый шаг .................................................................. 193
5.4.1. Контроллер Users ...................................................................................................... 193
5.4.2. Адрес URL страницы регистрации ..................................................................... 195
5.5. Заключение .......................................................................................................................... 196
5.5.1. Что мы узнали в этой главе ................................................................................... 197
5.6. Упражнения ......................................................................................................................... 198

Глава.6..Моделирование.пользователей............................200
6.1. Модель User ........................................................................................................................ 201
6.1.1. Миграции базы данных ........................................................................................... 202
6.1.2. Файл модели ............................................................................................................... 207
6.1.3. Создание объектов User .......................................................................................... 207

 Содержание

6.1.4. Поиск объектов User ................................................................................................ 210
6.1.5. Обновление объектов User .................................................................................... 211
6.2. Проверка объектов User .................................................................................................. 212
6.2.1. Проверка допустимости .......................................................................................... 213
6.2.2. Проверка наличия ..................................................................................................... 214
6.2.3. Проверка длины......................................................................................................... 216
6.2.4. Проверка формата..................................................................................................... 218
6.2.5. Проверка уникальности .......................................................................................... 222
6.3. Добавление безопасного пароля .................................................................................. 228
6.3.1. Хэшированный пароль ............................................................................................ 229
6.3.2. Метод has_secure_password ................................................................................... 231
6.3.3. Минимальная длина пароля ................................................................................. 232
6.3.4. Создание и аутентификация пользователя ..................................................... 233
6.4. Заключение .......................................................................................................................... 235
6.4.1.Что мы узнали в этой главе .................................................................................... 236
6.5. Упражнения ......................................................................................................................... 236

Глава.7..Регистрация......................................................239
7.1. Страница профиля пользователя ................................................................................ 239
7.1.1. Отладка и окружение Rails .................................................................................... 241
7.1.2. Ресурс Users ................................................................................................................ 245
7.1.3. Отладчик ...................................................................................................................... 249
7.1.4. Аватар и боковая панель ......................................................................................... 250
7.2. Форма регистрации .......................................................................................................... 254
7.2.1. Применение form_for ............................................................................................... 256
7.2.2. Разметка HTML формы регистрации ................................................................ 258
7.3. Неудачная регистрация ................................................................................................... 261
7.3.1. Действующая форма ................................................................................................ 262
7.3.2. Строгие параметры ................................................................................................... 264
7.3.3. Сообщения об ошибках при регистрации ........................................................ 267
7.3.4. Тесты для неудачной регистрации ...................................................................... 271
7.4. Успешная регистрация..................................................................................................... 273
7.4.1. Окончательная форма регистрации ................................................................... 273
7.4.2. Кратковременные сообщения ............................................................................... 275
7.4.3. Первая регистрация ................................................................................................. 277
7.4.4. Тесты для успешной отправки формы ............................................................... 279
7.5. Профессиональное развертывание ............................................................................. 280
7.5.1. Поддержка SSL .......................................................................................................... 281
7.5.2. Действующий веб-сервер ....................................................................................... 282
7.5.3. Номер версии Ruby .................................................................................................. 283
7.6. Заключение .......................................................................................................................... 284

Содержание  9

7.6.1. Что мы узнали в этой главе ................................................................................... 285
7.7. Упражнения ......................................................................................................................... 285

Глава.8..Вход.и.выход.....................................................288
8.1. Сеансы ................................................................................................................................... 288
8.1.1. Контроллер Sessions ................................................................................................. 289
8.1.2. Форма входа ................................................................................................................ 291
8.1.3. Поиск и аутентификация пользователя............................................................ 294
8.1.4. Отображение кратковременных сообщений ................................................... 297
8.1.5. Тест кратковременного сообщения ..................................................................... 298
8.2. Вход ........................................................................................................................................ 300
8.2.1. Метод log_in ................................................................................................................ 301
8.2.2. Текущий пользователь ............................................................................................ 303
8.2.3. Изменение ссылок шаблона .................................................................................. 306
8.2.4. Тестирование изменений в шаблоне .................................................................. 309
8.2.5. Вход после регистрации .......................................................................................... 313
8.3. Выход ..................................................................................................................................... 315
8.4. Запомнить меня ................................................................................................................. 317
8.4.1. Узелок на память ....................................................................................................... 318
8.4.2. Вход с запоминанием ............................................................................................... 322
8.4.3. Забыть пользователя................................................................................................ 329
8.4.4. Две тонкости ............................................................................................................... 331
8.4.5. Флажок «Запомнить меня» ................................................................................... 334
8.4.6. Проверка запоминания ........................................................................................... 339
8.5. Заключение .......................................................................................................................... 345
8.5.1. Что мы узнали в этой главе ................................................................................... 346
8.6. Упражнения ......................................................................................................................... 346

Глава.9..Обновление,.отображение.и.удаление..
пользователей..............................................................350
9.1. Обновление пользователей ............................................................................................ 350
9.1.1. Форма редактирования ........................................................................................... 351
9.1.2. Неудача при редактировании ............................................................................... 355
9.1.3. Тестирование неудачной попытки редактирования ..................................... 357
9.1.4. Успешная попытка редактирования (с TDD) ................................................. 357
9.2. Авторизация ........................................................................................................................ 360
9.2.1. Требование входа пользователей ......................................................................... 361
9.2.2. Требование наличия прав у пользователя ........................................................ 366
9.2.3. Дружелюбная переадресация ............................................................................... 370
9.3. Вывод списка всех пользователей ............................................................................... 374
9.3.1. Список пользователей ............................................................................................. 375

 Содержание

9.3.2. Образцы пользователей .......................................................................................... 378
9.3.3. Постраничный просмотр ........................................................................................ 380
9.3.4. Тестирование страницы со списком пользователей ..................................... 382
9.3.5. Частичный рефакторинг ......................................................................................... 385
9.4. Удаление пользователей ................................................................................................. 386
9.4.1. Администраторы ....................................................................................................... 386
9.4.2. Метод destroy .............................................................................................................. 389
9.4.3. Тесты для проверки удаления пользователя ................................................... 392
9.5. Заключение .......................................................................................................................... 394
9.5.1. Что мы изучили в этой главе................................................................................. 395
9.6. Упражнения ......................................................................................................................... 396

Глава.10..Активация.учетной.записи.и.сброс.пароля............399
10.1. Активация учетной записи .......................................................................................... 399
10.1.1. Ресурс AccountActivations ................................................................................... 401
10.1.2. Отправка письма для активации ....................................................................... 406
10.1.3. Активация учетной записи .................................................................................. 417
10.1.4. Тестирование активации и рефакторинг ........................................................ 424
10.2. Сброс пароля .................................................................................................................... 427
10.2.1. Ресурс для сброса пароля..................................................................................... 429
10.2.2. Контроллер и форма для сброса пароля ......................................................... 432
10.2.3. Метод объекта рассылки для сброса пароля ................................................. 435
10.2.4. Смена пароля ............................................................................................................ 441
10.2.5. Тестирование сброса пароля ............................................................................... 447
10.3. Отправка электронных писем из эксплуатационного окружения ................ 449
10.4. Заключение ....................................................................................................................... 451
10.4.1. Что мы узнали в этой главе ................................................................................. 452
10.5. Упражнения....................................................................................................................... 453
10.6. Доказательство сравнения срока годности ссылки............................................. 455

Глава.11..Микросообщения.пользователей........................457
11.1. Модель Micropost ............................................................................................................ 457
11.1.1. Базовая модель ........................................................................................................ 458
11.1.2. Проверка микросообщений ................................................................................. 459
11.1.3. Связь User/Micropost ............................................................................................ 462
11.1.4. Усовершенствование микросообщений .......................................................... 464
11.2. Вывод микросообщений ............................................................................................... 468
11.2.1. Отображение микросообщений ......................................................................... 468
11.2.2. Образцы микросообщений .................................................................................. 472
11.2.3. Тесты профиля с микросообщениями ............................................................. 477
11.3. Манипулирование микросообщениями .................................................................. 479

Содержание  11

11.3.1. Управление доступом к микросообщениям .................................................. 480
11.3.2. Создание микросообщений ................................................................................. 482
11.3.3. Прото-лента сообщений ....................................................................................... 489
11.3.4. Удаление микросообщений ................................................................................. 494
11.3.5. Тесты микросообщений ........................................................................................ 496
11.4. Изображения в микросообщениях ........................................................................... 499
11.4.1. Выгрузка изображений ......................................................................................... 499
11.4.2. Проверка изображений ......................................................................................... 503
11.4.3. Изменение размеров изображений ................................................................... 506
11.4.4. Выгрузка изображений в эксплуатационном окружении ........................ 508
11.5. Заключение ....................................................................................................................... 512
11.5.1. Что мы узнали в этой главе ................................................................................. 513
11.6. Упражнения....................................................................................................................... 513

Глава.12..Следование.за.пользователями..........................516
12.1. Модель Relationship ....................................................................................................... 517
12.1.1. Проблема модели данных (и ее решение) ...................................................... 517
12.1.2. Связь пользователь/взаимоотношения .......................................................... 523
12.1.3. Проверка взаимоотношений ............................................................................... 525
12.1.4. Читаемые пользователи ....................................................................................... 526
12.1.5. Читатели .................................................................................................................... 528
12.2. Веб-интерфейс следования за пользователями ................................................... 530
12.2.1. Образцы данных ...................................................................................................... 530
12.2.2. Статистика и форма для оформления следования ..................................... 532
12.2.3. Страницы читаемых и читателей ...................................................................... 540
12.2.4. Стандартная реализация кнопки «Подписаться»  ...................................... 547
12.2.5. Реализация кнопки «Подписаться» с применением Ajax ........................ 550
12.2.6. Тестирование подписки ........................................................................................ 553
12.3. Лента сообщений ............................................................................................................. 555
12.3.1. Мотивация и стратегия ......................................................................................... 555
12.3.2. Первая реализация ленты сообщений ............................................................. 557
12.3.3. Подзапросы ............................................................................................................... 560
12.4. Заключение ....................................................................................................................... 564
12.4.1. Рекомендации по дополнительным ресурсам .............................................. 564
12.4.2. Что мы узнали в этой главе ................................................................................. 565
12.5. Упражнения....................................................................................................................... 566

Предисловие

Моя бывшая компания (CD Baby) была одной из первых, громогласно заявивших 
о переходе на Ruby on Rails, а затем еще громче возвестившей о возврате на PHP 
(Google расскажет вам об этой драме). Эту книгу, написанную Майклом Хартлом, 
так настоятельно рекомендовали, что я должен был прочитать ее, и именно благодаря книге «Ruby on Rails для начинающих» я вернулся к Rails.
На своем пути я встречал много книг о Rails, и эта – одна из тех немногих, что, 
наконец, «зацепила» меня. Здесь все делается способом, типичным для Rails, который прежде казался мне крайне неестественным, но теперь, после изучения этой 
книги, пришло ощущение комфорта и естественности этого подхода. К тому же 
это единственная книга о Rails, которая соблюдает методику разработки через тестирование на всем своем протяжении; именно этот подход строго рекомендуется 
специалистами, но ранее я нигде не встречал такой его отчетливой демонстрации. 
Наконец, включив в примеры использование таких инструментов, как Git, GitHub 
и Heroku, автор дает почувствовать, что из себя представляет разработка проектов в реальном мире. Учебные примеры в этой книге не являются разрозненными 
фрагментами кода.
Линейное повествование – отличный формат. Лично я прочитал «Ruby on Rails 
для начинающих» за три полных дня1, выполняя все примеры и задачи в конце 
каждой главы. Делайте все от начала и до конца, не перескакивая от одной темы 
к другой, и вы получите максимальную пользу.
Наслаждайтесь!
Derek Sivers (sivers.org),
основатель CD Baby

1 
Это нестандартная ситуация! Обычно прохождение всего учебника занимает гораздо больше, чем 
три дня.

Благодарности

«Ruby on Rails для начинающих» во многом обязан своим появлением моей предыдущей книге по Rails – «Rails Space» и, следовательно, моему соавтору Орилиусу Прочазка (Aurelius Prochazka). Я хотел бы поблагодарить Орилиуса и за 
работу над прошлой книгой, и за поддержку этой. Я также хочу поблагодарить 
Дебру Уильямс Коли (Debra Williams Cauley), редактора обеих этих книг; пока 
она будет брать меня с собой на бейсбол, я буду продолжать писать книги для нее.
Я хотел бы поблагодарить многих фанатов Ruby, учивших и вдохновлявших 
меня на протяжении многих лет. Это: Дэвид Хейнмейер Ханссон (David Heinemeier 
Hansson), Йехуда Кац (Yehuda Katz), Карл Лерхе (Carl Lerche), Джереми Кемпер 
(Jeremy Kemper), Ксавье Нория (Xavier Noria), Райан Бейтс (Ryan Bates), Джеффри Грозенбах (Geoffrey Grosenbach), Питер Купер (Peter Cooper), Мэтт Аимонетти 
(Matt Aimonetti), Марк Бейтс (Mark Bates), Грегг Поллак (Gregg Pollack), Вейн Е. 
Сегуин (Wayne E. Seguin), Ами Хой (Amy Hoy), Дэйв Челимски (Dave Chelimsky), 
Пэт Мэддокс (Pat Maddox), Том Престон-Вернер (Tom Preston-Wer ner), Крис 
Ванстрат (Chris Wanstrath), Чад Фаулер (Chad Fowler), Джош Сассер (Josh 
Susser), Оби Фернандес (Obie Fernandez), Ян Мак-Фарланд (Ian McFarland), Стивен Бристоль (Steven Bristol), Пратик Найк (Pratik Naik), Сара Мей (Sarah Mei), 
Сара Аллен (Sarah Allen), Вольфрам Арнольд (Wolfram Arnold), Алекс Чеффи 
(Alex Chaffee), Джилс Бокет (Giles Bowkett), Эван Дорн (Evan Dorn), Лонг Нгуен 
(Long Nguyen), Джеймс Линденбаум (James Lindenbaum), Адам Уиггинс (Adam 
Wiggins), Тихон Бернстам (Tikhon Bernstam), Рон Эванс (Ron Evans), Уайат Грин 
(Wyatt Greene), Майлз Форрест (Miles Forrest), Санди Метц (Sandi Metz), Райан 
Дэвис (Ryan Davis), Аарон Паттерсон (Aaron Patterson), сотрудники Pivotal Labs, 
команда Heroku, ребята из thoughtbot и команда GitHub. Наконец, многих, многих читателей – слишком многих, чтобы здесь перечислить их всех, – внесших 
большое количество предложений по улучшению и сообщивших об ошибках во 
время работы над этой книгой, и я с благодарностью признаю, что она получилась 
настолько хорошей  во многом благодаря им.

Об авторе

Майкл Хартл – автор книги «Ruby on Rails для начинающих», одного из лучших 
введений в веб-разработку, сооснователь Softcover – платформы для упрощенной 
пуб ликации электронных книг. Его предыдущий опыт включает написание учебника «RailsSpace», ныне серьезно устаревшего, и разработку Insoshi, некогда популярной платформы создания социальных сетей, написанной на Ruby on Rails. 
В 2011 году Майкл был награжден премией «Ruby Hero Award» за вклад в развитие 
сообщества пользователей Ruby. Закончил Гарвардский колледж, имеет степень 
кандидата физических наук, присвоенную в Калифорнийском технологическом 
институте, и является выпускником предпринимательских курсов Y Combinator.

Авторские права и лицензия

«Ruby on Rails для начинающих: Изучаем разработку веб-приложений на основе 
Rails». Copyright © 2014 by Michael Hartl. Весь исходный код в книге доступен на 
условиях лицензий MIT и Beerware.

Лицензия MIT

Copyright (c) 2014 Michael Hartl

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения  
и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),  
безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, а также лицам,  
которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В ТОМ ЧИСЛЕ ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУАЦИИ, ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

/*
* ---------------------------------------------------------------------------* 
"ПИВНАЯ ЛИЦЕНЗИЯ" (Ревизия 43):
* Весь код написан Майклом Хартлом. До тех пор, пока вы осознаете это,
* вы можете делать с ним все, что захотите. Если мы когда-нибудь
* встретимся, и если это того стоило, вы можете купить мне пиво в ответ.
* ---------------------------------------------------------------------------*/

Глава 1

От нуля к развертыванию

Добро пожаловать в «Ruby on Rails для начинающих: Изучаем разработку вебприложений на основе Rails». Цель данной книги – научить вас разрабатывать 
собственные веб-приложения с использованием популярного фреймворка Ruby 
on Rails. Если эта тема для вас в новинку, «Ruby on Rails для начинающих» даст 
вам полное представление о разработке веб-приложений, включая основополагающие знания о Ruby, Rails, HTML и CSS, базах данных, управлении версиями, 
тестировании и развертывании – достаточно для начала вашей карьеры вебразработчика или предпринимателя в сфере компьютерных технологий. С другой 
стороны, если вы уже знакомы с веб-разработкой, эта книга поможет вам освоить 
основы фреймворка Rails, включая MVC и REST, генераторы, миграции, маршрутизацию и встроенный язык Ruby. В любом случае, когда вы закончите чтение 
этой книги, вы будете готовы извлечь максимум пользы из более продвинутых 
книг, блогов и скринкастов (видеоуроков), являющихся частью обширной образовательной экосистемы1.
В данной книге используется комплексный подход к веб-разработке: в процессе обучения мы напишем три примера приложений с возрастающей сложностью; в разделе 1.3 мы начнем создание простенького приложения, затем, в главе 2, перейдем к более продвинутому и, наконец, в главах с 3 по 12 полностью 
сосредоточимся на большом учебном примере. Как можно догадаться, примеры 
приложений в этой книге не привязаны к какой-либо категории веб-сайтов; хотя 
заключительный пример будет иметь значительное сходство с весьма популярной 
социальной сетью Twitter (которая, по совпадению, изначально была написана на 
Rails). Основное внимание здесь будет уделяться общим принципам разработки, 
поэтому полученные знания станут для вас надежным фундаментом, вне зависимости от того, какие виды приложений вы будете создавать.
Я часто слышу вопрос: «Какими знаниями нужно обладать для изучения вебразработки с этий книгой?» Как мы увидим в разделе 1.1.1, веб-разработка – сложная тема, особенно для полных новичков. Хотя изначально книга предназначалась 

1 
Самую свежую версию книги (на англ. языке. – Прим. перев.) можно найти на сайте http://www.
railstutorial.org/. Если вы читаете печатную версию книги, сверьте версию своего экземпляра с онлайн-версией на http://www.railstutorial.org/book.

От нуля к развертыванию  17

для читателей с некоторым опытом программирования, она нашла множество читателей среди начинающих разработчиков. Учитывая это, в данном (третьем) издании значительно снижен порог входа в разработку с Ruby on Rails (см. блок 1.1).

Блок.1.1  Снижение.порога.входа

С целью снижения порога входа для начинающих разработчиков в третьем издании сделано следующее:
•  использована стандартная среда разработки, размещенная в облаке (раздел 
1.2), что позволяет обойти множество проблем, связанных с установкой и настройкой новой системы;
•  использован «предустановленный стек» Rails, включающий встроенный фреймворк тестирования MiniTest;
•  уменьшено количество внешних зависимостей (RSpec, Cucumber, Capybara, 
Factory Girl);
•  использован облегченный и более гибкий подход к тестированию;
•  исключены сложные в настройке варианты (Spork, RubyTest);
•  меньше внимания уделяется особенностям, свойственным конкретной версии 
Rails, и больше – общим принципам веб-разработки.
Я надеюсь, что эти изменения сделают третье издание книги доступным для еще 
более широкой аудитории, чем предыдущие.

В этой первой главе мы начнем изучение фреймворка Ruby on Rails с установки 
необходимого программного обеспечения и настройки рабочего окружения (раздел 1.2). Затем создадим первое Rails-приложение с названием hello_app. В книге 
«Ruby on Rails для начинающих» особое значение придается хорошим привычкам 
в программировании, поэтому сразу после создания нового Rails-проекта мы поместим его в систему управления версиями Git (раздел 1.4). И, верите вы в это или 
нет, в этой главе мы даже развернем наше первое приложение в Сети (раздел 1.5).
В главе 2 мы создадим второй проект для демонстрации основ работы Railsприложения. Для быстроты в этом мини-приложении (с названием toy_app) мы применим прием «скаффолдинга» (scaffolding, см. блок 1.2) для генерации кода. Поскольку код получится одновременно и сложным, и уродливым, мы оставим его 
в стороне и сосредоточимся на взаимодействии с приложением через его идентификатор URI (который часто называют адресом URL)1, с использованием веб-браузера.
Остальная часть книги описывает разработку единственного большого учебного приложения (с названием sample_app), весь код которого будет написан с нуля. 
При этом мы будем использовать фиктивные объекты, приемы разработки через 
тестирование (Test-Driven Development, TDD) и интеграционные тесты. В главе 
3 мы сначала создадим статические страницы, а затем добавим в них немного ди
1 Аббревиатура URI расшифровывается как Uniform Resource Identifier (универсальный 
идентификатор ресурсов), а аббревиатура URL – как Uniform Resource Locator (универсальный указатель ресурсов). На практике URL обычно соответствует тому, что «находится в адресной строке браузера».

Доступ онлайн
1 499 ₽
В корзину