Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails

ИздательствоСимвол
Год издания2009
Страниц768
ПереплетМягкая обложка
Формат70х100/16 (170х240 мм, увеличенный)
ISBN978-5-93286-137-0
ИзготовительООО "Издательство "Символ-плюс". 193144, РФ, г. Санкт-Петербург, ул. 5-я Советская, 44/59
ИмпортерООО «НТЦ АПИ», г. Минск, ул. Уманская, 54, пом. 1, каб. 34

Первое исчерпывающее авторитетное руководство по разработке программного обеспечения промышленного качества на платформе Rails! Ruby on Rails устраняет сложности процесса разработки и дает профессиональным программистам возможность сосредоточиться на том, что действительно важно: создании ценного для бизнеса продукта.

Первое исчерпывающее авторитетное руководство по разработке программного обеспечения промышленного качества на платформе Rails! Ruby on Rails устраняет сложности процесса разработки и дает профессиональным программистам возможность сосредоточиться на том, что действительно важно: создании ценного для бизнеса продукта.

Пионер разработки в Rails, Оби Фернандес, совместно с авторитетными экспертами проливает свет на Rails API, идиомы Ruby, библиотеки open source, подключаемые модули, раскрывает подходы к проектированию. На базе уникального опыта профессионалы обсуждают проблемы, с которыми сталкиваются разработчики, и демонстрируют, как с помощью инструментов и рекомендованных методик Rails добиться максимальной продуктивности

Приводя подробные примеры кода, автор описывает возможности и подсистемы Rails, делится продвинутыми приемами программирования и уникальными знаниями по тестированию и развертыванию ПО. Эта книга поможет вам:

  • Увеличить свою продуктивность как веб-разработчика;
  • Получить истинное удовольствие от программирования в Ruby on Rails;
  • Узнать о новых возможностях Rails 2.0;
  • Ускорить проектирование и обеспечить сопровождение в долгосрочной перспективе при помощи TestUnit и RSpec;
  • Понять сложный программный поток и управлять им в контроллерах Rails;
  • Научиться пользоваться поддержкой со стороны Rails при проектировании REST-совместимых API;
  • Освоить хитроумные концепции и приемы маршрутизации в Rails;
  • Исследовать и отлаживать маршрутизацию в Rails;
  • Извлечь максимум пользы из объектно-реляционного отображения ActiveRecord;
  • Применять технологию Ajax в Rails-приложениях;
  • Включать в приложение механизмы регистрации и аутентификации;
  • Расширять Rails с помощью сторонних подключаемых модулей и писать собственные;
  • Интегрировать в приложение почтовые службы при помощи ActionMailer;
  • Выбрать подходящую конфигурацию для режима промышленной эксплуатации;
  • Упростить и ускорить развертывание с помощью системы Capistrano.

Содержание

  • Предисловие
  • Благодарности
  • Об авторе
  • Введение
  • Глава 1. Среда и конфигурирование Rails
    • Запуск
    • Параметры среды по умолчанию
    • Начальная загрузка
    • Пакеты RubyGem
    • Инициализатор
    • Подразумеваемые пути загрузки
    • Rails, модули и код автозагрузки
    • Встройка Rails Info
    • Конфигурирование
    • Дополнительные конфигурационные параметры
    • Режим разработки
    • Динамическая перезагрузка классов
    • Загрузчик классов в Rails
    • Режим тестирования
    • Режим эксплуатации
    • Протоколирование
    • Протоколы Rails
    • Анализ протоколов
    • Syslog
    • Заключение
  • Глава 2. Работа с контроллерами
    • Диспетчер: с чего все начинается
    • Обработка запроса
    • Познакомимся с диспетчером поближе
    • Рендеринг представления
    • Если сомневаетесь, рисуйте
    • Явный рендеринг
    • Рендеринг шаблона другого действия
    • Рендеринг совершенно постороннего шаблона
    • Рендеринг подшаблона
    • Рендеринг встроенного шаблона
    • Рендеринг текста
    • Рендеринг структурированных данных других типов
    • Пустой рендеринг
    • Параметры рендеринга
    • Переадресация
    • Коммуникация между контроллером и представлением
    • Фильтры
    • Наследование фильтров
    • Типы фильтров
    • Упорядочение цепочки фильтров
    • Around-фильтры
    • Пропуск цепочки фильтров
    • Условная фильтрация
    • Прерывание цепочки фильтров
    • Потоковая отправка
      • send_data(data, options = {})
      • send_file(path, options = {})
    • Как заставить сам веб-сервер отправлять файлы
    • Заключение
  • Глава 3. Маршрутизация
    • Две задачи маршрутизации
    • Связанные параметры
    • Метапараметры ("приемники")
    • Статические строки
    • Файл routes.rb
    • Маршрут по умолчанию
    • О поле :id
    • Генерация маршрута по умолчанию
    • Модификация маршрута по умолчанию
    • Предпоследний маршрут и метод respond_to
    • Метод respond_to и заголовок HTTP-Accept
    • Пустой маршрут
    • Самостоятельное создание маршрутов
    • Использование статических строк
    • Использование собственных "приемников"
    • Замечание о порядке маршрутов
    • Применение регулярных выражений в маршрутах
    • Параметры по умолчанию и метод url_for
    • Что случилось с :id
    • Использование литеральных URL
    • Маскирование маршрутов
    • Маскирование пар ключ/значение
    • Именованные маршруты
    • Создание именованного маршрута
    • Что лучше: name_path или name_url?
    • Замечания
    • Как выбирать имена для маршрутов
    • Синтаксическая глазурь
    • Еще немного глазури?
    • Метод организации контекста with_options
    • Заключение
  • Глава 4. REST, ресурсы и Rails
    • О REST в двух словах
    • REST в Rails
    • Маршрутизация и CRUD
    • Ресурсы и представления
    • Ресурсы REST и Rails
    • От именованных маршрутов к поддержке REST
    • И снова о глаголах HTTP
    • Стандартные REST-совместимые действия контроллеров
    • Хитрость для методов PUT и DELETE
    • Одиночные и множественные
    • REST-совместимые маршруты
    • Специальные пары: new/create и edit/update
    • Одиночные маршруты к ресурсам
    • Вложенные ресурсы
    • Явное задание :path_prefix
    • Явное задание :name_prefix
    • Явное задание REST-совместимых контроллеров
    • А теперь все вместе
    • Замечания
    • О глубокой вложенности
    • Настройка REST-совместимых маршрутов
    • Маршруты к дополнительным действиям
    • Дополнительные маршруты к наборам
    • Замечания
    • Ресурсы, ассоциированные только с контроллером
    • Различные представления ресурсов
    • Метод respond_to
    • Форматированные именованные маршруты
    • Набор действий в Rails для REST
      • index
      • show
      • destroy
      • new и create
      • edit и update
    • Заключение
  • Глава 5. Размышления о маршрутизации в Rails
    • Исследование маршрутов в консоли приложения
    • Распечатка маршрутов
    • Анатомия объекта Route
    • Распознавание и генерация с консоли
    • Консоль и именованные маршруты
    • Тестирование маршрутов
    • Подключаемый модуль Routing Navigator
    • Заключение
  • Глава 6. Работа с ActiveRecord
    • Основы
    • Миграции
    • Создание миграций
    • Migration API
    • Определение колонок
    • Методы в стиле макросов
    • Объявление отношений
    • Примат соглашения над конфигурацией
    • Приведение к множественному числу
    • Задание имен вручную
    • Унаследованные схемы именования
    • Определение атрибутов
    • Значения атрибутов по умолчанию
    • Сериализованные атрибуты
    • CRUD: создание, чтение, обновление, удаление
    • Создание новых экземпляров ActiveRecord
    • Чтение объектов ActiveRecord
    • Чтение и запись атрибутов
    • Доступ к атрибутам и манипулирование ими до приведения типов
    • Перезагрузка
    • Динамический поиск по атрибутам
    • Специальные SQL-запросы
    • Кэш запросов
    • Обновление
    • Обновление с условием
    • Обновление конкретного экземпляра
    • Обновление конкретных атрибутов
    • Вспомогательные методы обновления
    • Контроль доступа к атрибутам
    • Удаление и уничтожение
    • Блокировка базы данных
    • Оптимистическая блокировка
    • Пессимистическая блокировка
    • Замечание
    • Дополнительные средства поиска
    • Условия
    • Упорядочение результатов поиска
    • Параметры limit и offset
    • Параметр select
    • Параметр from
    • Группировка
    • Параметры блокировки
    • Соединение и включение ассоциаций
    • Параметр readonly
    • Соединение с несколькими базами данных в разных моделях
    • Прямое использование соединений с базой данных
    • Модуль DatabaseStatements
    • Другие методы объекта connection
    • Другие конфигурационные параметры
    • Заключение
  • Глава 7. Ассоциации в ActiveRecord
    • Иерархия ассоциаций
    • Отношения один-ко-многим
    • Добавление ассоциированных объектов в набор
    • Методы класса AssociationCollection
    • Ассоциация belongs_to
    • Перезагрузка ассоциации
    • Построение и создание связанных объектов через ассоциацию
    • Параметры метода belongs_to
    • Ассоциация has_many
    • Параметры метода has_many
    • Методы прокси-классов
    • Отношения многие-ко-многим
    • Метод has_and_belongs_to_many
    • Конструкция has_many :through
    • Параметры ассоциации has_many :through
    • Отношения один-к­одному
    • Ассоциация has_one
    • Параметры ассоциации has_one
    • Несохраненные объекты и ассоциации
    • Ассоциации один-к-одному
    • Наборы
    • Расширения ассоциаций
    • Класс AssociationProxy
    • Методы reload и reset
    • Методы proxy_owner, proxy_reflection и proxy_target
    • Заключение
  • Глава 8. Валидаторы в ActiveRecord
    • Нахождение ошибок
    • Простые декларативные валидаторы
      • validates_acceptance_of
      • validates_associated
      • validates_confirmation_of
      • validates_each
      • validates_inclusion_of и validates_exclusion_of
      • validates_existence_of
      • validates_format_of
      • validates_length_of
      • validates_numericality_of
      • validates_presence_of
      • validates_uniqueness_of
    • Исключение RecordInvalid
    • Общие параметры валидаторов
      • :allow_nil
      • :if
      • :message
      • :on
    • Условная проверка
    • Замечания по поводу применения
    • Работа с объектом Errors
    • Манипулирование набором Errors
    • Проверка наличия ошибок
    • Нестандартный контроль
    • Отказ от контроля
    • Заключение
  • Глава 9.Дополнительные возможности ActiveRecord
    • Обратные вызовы
    • Регистрация обратного вызова
    • Парные обратные вызовы before/after
    • Прерывание выполнения
    • Примеры применения обратных вызовов
    • Особые обратные вызовы: after_initialize и after_find
    • Классы обратных вызовов
    • Наблюдатели
    • Соглашения об именовании
    • Регистрация наблюдателей
    • Момент оповещения
    • Наследование с одной таблицей
    • Отображение наследования на базу данных
    • Замечания об STI
    • STI и ассоциации
    • Абстрактные базовые классы моделей
    • Полиморфные отношения has_many
    • Случай модели с комментариями
    • Замечание об ассоциации has_many
    • Модули как средство повторного использования общего поведения
    • Несколько слов об области видимости класса и контекстах
    • Обратный вызов included
    • Модификация классов ActiveRecord во время выполнения
    • Замечания
    • Ruby и предметно-ориентированные языки
    • Заключение
  • Глава 10. ActionView
    • Основы ERb
    • Практикум по ERb
    • Удаление пустых строк из вывода ERb
    • Закомментирование ограничителей ERb
    • Условный вывод
    • RHTML? RXML? RJS?
    • Макеты и шаблоны
    • Подстановка содержимого
    • Переменные шаблона
    • Защита целостности представления от данных, введенных пользователем
    • Подшаблоны
    • Простые примеры
    • Повторное использование подшаблонов
    • Разделяемые подшаблоны
    • Передача переменных подшаблонам
    • Рендеринг наборов
    • Протоколирование
    • Кэширование
    • Кэширование в режиме разработки?
    • Кэширование страниц
    • Кэширование действий
    • Кэширование фрагментов
    • Истечение срока хранения кэшированного содержимого
    • Автоматическая очистка кэша с помощью дворников
    • Протоколирование работы кэша
    • Подключаемый модуль Action Cache
    • Хранилища для кэша
    • Заключение
  • Глава 11. Все о помощниках
    • Модуль ActiveRecordHelper
    • Отчет об ошибках контроля
    • Автоматическое создание формы
    • Настройка выделения ошибочных полей
    • Модуль AssetTagHelper
    • Помощники для формирования заголовка
    • Только для подключаемых модулей: добавление включаемых по умолчанию JavaScript-сценариев
    • Модуль BenchmarkHelper
    • Модуль CacheHelper
    • Модуль CaptureHelper
    • Модуль DateHelper
    • Помощники для выбора даты и времени
    • Помощники для задания отдельных элементов даты и времени
    • Параметры, общие для всех помощников, связанных с датами
    • Методы distance_in_time со сложными именами
    • Модуль DebugHelper
    • Модуль FormHelper
    • Создание форм для моделей ActiveRecord
    • Как помощники формы получают свои значения
    • Модуль FormOptionsHelper
    • Помощники select
    • Другие помощники
    • Модуль FormTagHelper
    • Модуль JavaScriptHelper
    • Модуль NumberHelper
    • Модуль PaginationHelper
      • will_paginate
      • paginator
      • Paginating Find
    • Модуль RecordIdentificationHelper
    • Модуль RecordTagHelper
    • Модуль TagHelper
    • Модуль TextHelper
    • Модуль UrlHelper
    • Написание собственных модулей
    • Мелкие оптимизации: помощник Title
    • Инкапсуляция логики представления: помощник photo_for
    • Более сложное представление: помощник breadcrumbs
    • Обертывание и обобщение подшаблонов
    • Помощник tiles
    • Обобщение подшаблонов
    • Заключение
  • Глава 12. Ajax on Rails
    • Библиотека Prototype
    • Подключаемый модуль FireBug
    • Prototype API
    • Функции верхнего уровня
    • Объект Class
    • Расширения класса JavaScript Object
    • Расширения класса JavaScript Array
    • Расширения объекта document
    • Расширения класса Event
    • Расширения класса JavaScript Function
    • Расширения класса JavaScript Number
    • Расширения класса JavaScript String
    • Объект Ajax
    • Объект Ajax.Responders
    • Объект Enumerable
    • Класс Hash
    • Объект ObjectRange
    • Объект Prototype
    • Модуль PrototypeHelper
      • link_to_remote
      • remote_form_for
      • periodically_call_remote
      • observe_field
      • observe_form
      • RJS - пишем Javascript на Ruby
      • RJS-шаблоны
      • <<(javascript)
      • [](id)
      • alert(message)
      • call(function, *arguments, &block)
      • delay(seconds = 1) { ... }
      • draggable(id, options = {})
      • drop_receiving(id, options = {})
      • hide(*ids)
      • insert_html(position, id, *options_for_render)
      • literal (code)
      • redirect_to(location)
      • remove(*ids)
      • replace(id, *options_for_render)
      • replace_html(id, *options_for_render)
      • select(pattern)
      • show(*ids)
      • sortable(id, options = {})
      • toggle(*ids)
      • visual_effect(name, id = nil, options = {})
      • JSON
    • Перетаскивание мышью
    • Сортируемые списки
    • Автозавершение
    • Редактирование на месте
    • Заключение
  • Глава 13. Управление сеансами
    • Что хранить в сеансе
    • Текущий пользователь
    • Рекомендации по работе с сеансами
    • Способы организации сеансов
    • Отключение сеансов для роботов
    • Избирательное включение сеансов
    • Безопасные сеансы
    • Хранилища
    • ActiveRecord SessionStore
    • PStore (на базе файлов)
    • Хранилище DRb
    • Хранилище memcache
    • Спорное хранилище CookieStore
    • Жизненный цикл сеанса и истечение срока хранения
    • Подключаемый модуль Session Timeout
    • Отслеживание активных сеансов
    • Повышенная безопасность сеанса
    • Удаление старых сеансов
    • Cookies
    • Чтение и запись cookies
    • Заключение
  • Глава 14. Регистрация и аутентификация
    • Подключаемый модуль Acts as Authenticated
    • Установка и настройка
    • Модель User
    • Класс AccountController
    • Получение имени пользователя из cookies
    • Текущий пользователь
    • Протоколирование в ходе тестирования
    • Заключение
  • Глава 15. XML и ActiveResource
    • Метод to_xml
    • Настройка результата работы to_xml
    • Ассоциации и метод to_xml
    • Продвинутое применение метода to_xml
    • Динамические атрибуты
    • Переопределение метода to_xml
    • Уроки реализации метода to_xml в классе Array
    • Класс XML Builder
    • Разбор XML
    • Преобразование XML в хеши
    • Библиотека XmlSimple
    • Приведение типов
    • Библиотека ActiveResource
    • Метод find
    • Метод create
    • Метод update
    • Метод delete
    • Заголовки
    • Настройка
    • Хешированные формы
    • Заключение
  • Глава 16. ActionMailer
    • Конфигурирование
    • Модели почтальона
    • Подготовка исходящего почтового сообщения
    • Почтовые сообщения в формате HTML
    • Многочастные сообщения
    • Вложение файлов
    • Отправка почтового сообщения
    • Получение почты
    • Справка по TMail::Mail API
    • Обработка вложений
    • Конфигурирование
    • Заключение
  • Глава 17. Тестирование
    • Терминология Rails, относящаяся к тестированию
    • К вопросу об изоляции…
    • Mock-объекты в Rails
    • Настоящие Mock-объекты и заглушки
    • Тесты сопряжения
    • О путанице в терминологии
    • Класс Test::Unit
    • Прогон тестов
    • Фикстуры
    • Фикстуры в формате CSV
    • Доступ к записям фикстуры из тестов
    • Динамические данные в фикстурах
    • Использование данных из фикстур в режиме разработки
    • Генерация фикстур из данных, используемых в режиме разработки
    • Параметры фикстур
    • Никто не любит фикстуры
    • Не все так плохо с фикстурами
    • Утверждения
    • Простые утверждения
    • Утверждения Rails
    • По одному утверждению в каждом тестовом методе
    • Тестирование моделей с помощью автономных тестов
    • Основы тестирования моделей
    • Что тестировать
    • Тестирование контроллеров с помощью функциональных тестов
    • Структура и подготовка
    • Методы функциональных тестов
    • Типичные утверждения
    • Тестирование представлений с помощью функциональных тестов
    • Тестирование поведения RJS
    • Другие методы выборки
    • Тестирование правил маршрутизации
    • Тесты сопряжения в Rails
    • Основы
    • API тестов сопряжения
    • Работа с сеансами
    • Задания Rake, относящиеся к тестированию
    • Приемочные тесты
    • Приемочные тесты с самого начала
    • Система Selenium
    • Основы
    • Приступая к работе
    • RSelenese
    • Заключение
  • Глава 18. RSpec on Rails
    • Введение в RSpec
    • Обязанности и ожидания
    • Предикаты
    • Нестандартные верификаторы ожиданий
    • Несколько примеров для одного поведения
    • Разделяемые поведения
    • Mock-объекты и заглушки в RSpec
    • Прогон "спеков"
    • Установка RSpec и подключаемого модуля RSpec on Rails
    • Подключаемый модуль RSpec on Rails
    • Генераторы
    • Спецификации модели
    • Спецификации контроллеров
    • Спецификации представлений
    • Спецификации помощников
    • Обстраивание
    • Инструменты RSpec
    • Autotest
    • RCov
    • Заключение
  • Глава 19. Расширение Rails с помощью подключаемых модулей
    • Управление подключаемыми модулями
    • Повторное использование кода
    • Сценарий plugin
    • Система Subversion и сценарий script/plugin
    • Использование Piston
    • Установка
    • Импорт внешней библиотеки
    • Конвертация существующих внешних библиотек
    • Обновление
    • Блокировка и разблокировка
    • Свойства Piston
    • Написание собственных подключаемых модулей
    • Точка расширения init.rb
    • Каталог lib
    • Расширение классов Rails
    • Файлы README и MIT-LICENSE
    • Файлы install.rb и uninstall.rb
    • Специальные задания Rake
    • Rakefile подключаемого модуля
    • Тестирование подключаемых модулей
    • Заключение
  • Глава 20. Конфигурации Rails в режиме эксплуатации
    • Краткая история промышленной эксплуатации Rails
    • Предварительные условия
    • Контрольный перечень
    • Серверное и сетевое окружение
    • Ярус веб-сервера
    • Ярус сервера приложений
    • Ярус базы данных
    • Мониторинг
    • Управление версиями
    • Установка
    • Ruby
    • Система RubyGems
    • Rails
    • Mongrel
    • Mongrel Cluster
    • Nginx
    • Subversion
    • MySQL
    • Monit
    • Capistrano
    • Конфигурация
    • Конфигурирование Mongrel Cluster
    • Конфигурирование Nginx
    • Конфигурирование Monit
    • Конфигурирование Capistrano
    • Конфигурирование сценариев init
    • Сценарий init для Nginx
    • Сценарий init для Mongrel
    • Сценарий init для Monit
    • Развертывание и запуск
    • Другие замечания по поводу промышленной системы
    • Избыточность и перехват управления при отказе
    • Кэширование
    • Производительность и масштабируемость
    • Безопасность
    • Удобство сопровождения
    • Заключение
  • Глава 21. Capistrano
    • Обзор системы Capistrano
    • Терминология
    • Основы
    • Что Capistrano сделала, а что - нет
    • Приступаем к работе
    • Установка
    • Готовим приложение Rails для работы с Capistrano
    • Конфигурирование развертывания
    • О сценарии spin
    • Подготовка машины развертывания
    • Развертываем!
    • Переопределение предположений Capistrano
    • Использование удаленной учетной записи пользователя
    • Изменение системы управления версиями, используемой Capistrano
    • Работа без доступа к системе управления версиями с машины развертывания
    • Если файл database.yml не хранится в репозитории СУВ
    • Полезные рецепты Capistrano
    • Переменные и их область видимости
    • Упражнение 1. Промежуточный сервер
    • Упражнение 2. Управление другими службами
    • Развертывание на нескольких серверах
    • Транзакции
    • Доступ к машинам развертывания через прокси-серверы
    • Заключение
  • Глава 22. Фоновая обработка
    • Сценарий script/runner
    • Приступаем к работе
    • Несколько слов об использовании
    • Замечания по поводу script/runner
    • DRb
    • Простой DRb-сервер
    • Использование DRb из Rails
    • Замечания о DRb
    • Ресурсы
    • BackgrounDRb
    • Приступаем к работе
    • Конфигурирование
    • Знакомство с принципами работы BackgrounDRb
    • Использование класса MiddleMan
    • Подводные камни
    • Замечания о BackGrounDRb
    • Daemons
    • Порядок применения
    • Введение в потоки
    • Замечания о библиотеке Daemons
    • Заключение
  • Приложение A. Справочник по ActiveSupport API
  • Приложение B. Предметы первой необходимости для Rails
  • Послесловие
  • Алфавитный указатель

Кадры Все 19

Похожие лоты

Вход

В течение нескольких секунд вам придёт SMS с одноразовым кодом для входа. Если ничего не пришло — отправьте код ещё раз.
Это бесплатно, безопасно и займёт всего несколько секунд
Войдите с помощью своего профиля

Регистрация

Введите номер вашего мобильного телефона:
Войдите с помощью электронной почты или номера телефона
Войдите с помощью своего профиля

Восстановление пароля

Укажите адрес электронной почты, который вы использовали при регистрации
Нужна помощь? Напишите нам

Восстановление пароля

Инструкции по восстановлению пароля высланы на 
Нужна помощь? Напишите нам