Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails
| Серия: |
High tech |
| Издательство: |
Символ |
| Год издания: |
2009 |
| Страниц: |
768 |
| Переплет: |
Мягкая обложка |
| Формат: |
70х100/16 (170х240 мм, увеличенный) |
| ISBN: |
978-5-93286-137-0 |
| Вес: |
920 г |
| Рейтинг: |
подано менее 2-х голосов |
|
|
Ваша скидка: 79%
Цена: 385 283 79 040 руб.
Срок поставки: 7 — 11 дней
Первое исчерпывающее авторитетное руководство по разработке программного обеспечения промышленного качества на платформе Rails! Ruby on Rails устраняет сложности процесса разработки и дает профессиональным программистам возможность сосредоточиться на том, что действительно важно: создании ценного для бизнеса продукта.
Пионер разработки в Rails, Оби Фернандес, совместно с авторитетными экспертами проливает свет на Rails API, идиомы Ruby, библиотеки open source, подключаемые модули, раскрывает подходы к проектированию. На базе уникального опыта профессионалы обсуждают проблемы, с которыми сталкиваются разработчики, и демонстрируют, как с помощью инструментов и рекомендованных методик 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.
От OZ.by
Содержание
- Предисловие
- Благодарности
- Об авторе
- Введение
- Глава 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
- Послесловие
- Алфавитный указатель
кто изучил сие творение, поделитесь соображениями, стоит ли она своих денег.