ebook img

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

768 Pages·2009·3.31 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

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

The Rails Way Obie Fernandez Путь Rails Подробное руководство по созданию приложений в среде Ruby on Rails Оби Фернандес Санкт-Петербург – Москва 2009 Серия «High tech» Оби Фернандес Путь Rails. Подробное руководство по cозданию приложений в среде Ruby on Rails Перевод А. Слинкина Главный редактор А. Галунов Зав. редакцией Н. Макарова Выпускающий редактор Л. Пискунова Редактор Е. Бекназарова Корректор Т. Золотова Верстка Н. Пискунова Художник В. Гренда Фернандес О. Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails. – Пер. с англ. – СПб: Символ-Плюс, 2009. – 768 с., ил. ISBN­13: 978-5-93286-137-0 ISBN­10: 5-93286-137-1 Среда Ruby on Rails стремительно занимает ведущее место в ряду наиболее популярных платформ для разработки веб-приложений. Она основана на одном из самых элегантных языков программирования, Ruby, и доставляет истинное удовольствие своим приверженцам. Хотите оказаться в первых рядах? Тогда эта книга для вас! Ее автор, Оби Фернандес, и целая группа экспертов подробно описывают основные возможности и подсистемы Rails: контроллеры, маршру- тизацию, поддержку стиля REST, объектно-реляционное отображение с помо- щью библиотеки ActiveRecord, применение технологии AJAX в Rails-прило- жениях и многое другое. Отталкиваясь от своего уникального опыта и приводя подробные примеры кода, Оби демонстрирует, как с помощью инструментов и рекомендованных методик Rails добиться максимальной продуктивности и получать наслаждение от создания совершенных приложений. ISBN­13: 978-5-93286-137-0 ISBN­10: 5-93286-137-1 ISBN­ 0-321-44561-9 (англ) © Издательство Символ-Плюс, 2009 Authorized translation from the English language edition, entitled RAILS WAY, THE, 1st Edition, ISBN­ 0321445619, by FERN­AN­DEZ, OBIE, published by Pearson Education, Inc, publishing as Addison Wesley Professional, Copyright © 2008 Pearson Education, Inc. All rights reserved. N­o part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Russian language edition published by SYMBOL-PLUS PUBLISHIN­G LTD, Copyright © 2009. Все права на данное издание защищены Законодательством РФ, включая право на полное или частич- ное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные знаки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство «Символ-Плюс». 199034, Санкт-Петербург, 16 линия, 7, тел. (812) 3245353, www.symbol.ru. Лицензия ЛП N­ 000054 от 25.12.98. Подписано в печать 23.10.2008. Формат 70х100 1/ . Печать офсетная. Объем 48 печ. л. Тираж 2000 экз. За1к6аз N­ Отпечатано с готовых диапозитивов в ГУП «Типография «Наука» 199034, Санкт-Петербург, 9 линия, 12. Дези – моей любимой, подруге, музе. Оглавление Предисловие ..........................................................................22 Благодарности .......................................................................22 Об авторе...............................................................................26 Введение ...............................................................................27 1. Среда и конфигурирование Rails ............................................38 Запуск ....................................................................................39 Параметры среды по умолчанию ............................................39 Начальная загрузка .............................................................40 Пакеты RubyGem .................................................................42 Инициализатор ...................................................................42 Подразумеваемые пути загрузки ............................................42 Rails, модули и код автозагрузки ...........................................43 Встройка Rails Info ..............................................................44 Конфигурирование ...............................................................45 Дополнительные конфигурационные параметры ......................49 Режим разработки ....................................................................49 Динамическая перезагрузка классов ......................................50 Загрузчик классов в Rails ......................................................50 Режим тестирования ................................................................52 Режим эксплуатации ................................................................52 Протоколирование ...................................................................53 Протоколы Rails ..................................................................55 Анализ протоколов ..............................................................56 Syslog .................................................................................58 Заключение .............................................................................59 2. Работа с контроллерами .........................................................60 Диспетчер: с чего все начинается ................................................61 Обработка запроса ................................................................61 Познакомимся с диспетчером поближе ...................................62 Оглавление 7 Рендеринг представления ..........................................................64 Если сомневаетесь, рисуйте ...................................................64 Явный рендеринг .................................................................65 Рендеринг шаблона другого действия .....................................65 Рендеринг совершенно постороннего шаблона ..........................66 Рендеринг подшаблона .........................................................67 Рендеринг встроенного шаблона .............................................67 Рендеринг текста .................................................................67 Рендеринг структурированных данных других типов ................68 Пустой рендеринг ................................................................68 Параметры рендеринга .........................................................68 Переадресация .........................................................................71 Коммуникация между контроллером и представлением ................74 Фильтры .................................................................................75 Наследование фильтров ........................................................76 Типы фильтров ....................................................................77 Упорядочение цепочки фильтров ...........................................78 Aroundфильтры ..................................................................78 Пропуск цепочки фильтров ...................................................80 Условная фильтрация...........................................................80 Прерывание цепочки фильтров ..............................................81 Потоковая отправка .................................................................81 send_data(data, options = {}) ...................................................81 send_file(path, options = {}) ....................................................82 Как заставить сам вебсервер отправлять файлы .......................85 Заключение .............................................................................86 3. Маршрутизация .....................................................................87 Две задачи маршрутизации .......................................................88 Связанные параметры ...............................................................90 Метапараметры («приемники») ..................................................91 Статические строки ..................................................................91 Файл routes.rb .........................................................................93 Маршрут по умолчанию ........................................................94 О поле :id ............................................................................95 Генерация маршрута по умолчанию .......................................96 Модификация маршрута по умолчанию ..................................97 Предпоследний маршрут и метод respond_to ................................97 Метод respond_to и заголовок HTTPAccept .............................98 Пустой маршрут ......................................................................99 Самостоятельное создание маршрутов .......................................100 Использование статических строк ............................................100 Использование собственных «приемников» ...............................101 8 Оглавление Замечание о порядке маршрутов ..............................................102 Применение регулярных выражений в маршрутах .....................103 Параметры по умолчанию и метод url_for ..................................104 Что случилось с :id .............................................................105 Использование литеральных URL ............................................106 Маскирование маршрутов .......................................................106 Маскирование пар ключ/значение ............................................107 Именованные маршруты .........................................................108 Создание именованного маршрута ........................................108 Что лучше: name_path или name_url? ...................................108 Замечания ........................................................................109 Как выбирать имена для маршрутов .........................................109 Синтаксическая глазурь .....................................................111 Еще немного глазури? ........................................................111 Метод организации контекста with_options ................................112 Заключение ...........................................................................113 4. REST, ресурсы и Rails ............................................................114 О REST в двух словах ..............................................................115 REST в Rails ..........................................................................116 Маршрутизация и CRUD .........................................................117 Ресурсы и представления ........................................................118 Ресурсы REST и Rails .........................................................118 От именованных маршрутов к поддержке REST .....................119 И снова о глаголах HTTP .....................................................120 Стандартные REST-совместимые действия контроллеров .............121 Хитрость для методов PUT и DELETE ...................................122 Одиночные и множественные RESTсовместимые маршруты .............................................123 Специальные пары: new/create и edit/update .........................123 Одиночные маршруты к ресурсам .............................................124 Вложенные ресурсы................................................................125 Явное задание :path_prefix ..................................................127 Явное задание :name_prefix .................................................127 Явное задание RESTсовместимых контроллеров ....................129 А теперь все вместе .............................................................129 Замечания ........................................................................131 О глубокой вложенности .....................................................131 Настройка REST-совместимых маршрутов .................................133 Маршруты к дополнительным действиям ..............................133 Дополнительные маршруты к наборам ..................................134 Замечания ........................................................................134 Ресурсы, ассоциированные только с контроллером .....................136 Оглавление 9 Различные представления ресурсов ..........................................138 Метод respond_to ...............................................................138 Форматированные именованные маршруты ...........................139 Набор действий в Rails для REST ..............................................139 index ................................................................................140 show .................................................................................143 destroy .............................................................................143 new и create .......................................................................144 edit и update ......................................................................146 Заключение ...........................................................................146 5. Размышления о маршрутизации в Rails ................................147 Исследование маршрутов в консоли приложения ........................147 Распечатка маршрутов .......................................................148 Анатомия объекта Route .....................................................149 Распознавание и генерация с консоли ...................................151 Консоль и именованные маршруты .......................................153 Тестирование маршрутов ........................................................153 Подключаемый модуль Routing N­avigator .................................155 Заключение ...........................................................................156 6. Работа с ActiveRecord ...........................................................157 Основы .................................................................................158 Миграции .............................................................................160 Создание миграций ............................................................161 Migration API ....................................................................164 Определение колонок .........................................................166 Методы в стиле макросов .........................................................171 Объявление отношений .......................................................172 Примат соглашения над конфигурацией ...............................173 Приведение к множественному числу ...................................173 Задание имен вручную ........................................................175 Унаследованные схемы именования .....................................175 Определение атрибутов ...........................................................176 Значения атрибутов по умолчанию .......................................177 Сериализованные атрибуты .................................................179 CRUD: создание, чтение, обновление, удаление ..........................179 Создание новых экземпляров ActiveRecord ............................179 Чтение объектов ActiveRecord .............................................180 Чтение и запись атрибутов ..................................................182 Доступ к атрибутам и манипулирование ими до приведения типов ...........................................................184 Перезагрузка.....................................................................185 10 Оглавление Динамический поиск по атрибутам.......................................185 Специальные SQLзапросы ..................................................186 Кэш запросов ....................................................................187 Обновление .......................................................................189 Обновление с условием .......................................................190 Обновление конкретного экземпляра ....................................191 Обновление конкретных атрибутов .........................................191 Вспомогательные методы обновления ...................................192 Контроль доступа к атрибутам .............................................192 Удаление и уничтожение ....................................................193 Блокировка базы данных ........................................................194 Оптимистическая блокировка ..............................................194 Пессимистическая блокировка ............................................196 Замечание .........................................................................197 Дополнительные средства поиска .............................................197 Условия ............................................................................198 Упорядочение результатов поиска ........................................199 Параметры limit и offset .....................................................200 Параметр select ..................................................................201 Параметр from ...................................................................201 Группировка .....................................................................202 Параметры блокировки ......................................................202 Соединение и включение ассоциаций ....................................202 Параметр readonly .............................................................203 Соединение с несколькими базами данных в разных моделях .......203 Прямое использование соединений с базой данных .....................204 Модуль DatabaseStatements .................................................204 Другие методы объекта connection ........................................206 Другие конфигурационные параметры ......................................208 Заключение ...........................................................................209 7. Ассоциации в ActiveRecord ...................................................211 Иерархия ассоциаций .............................................................211 Отношения один-ко-многим.....................................................213 Добавление ассоциированных объектов в набор ......................215 Методы класса AssociationCollection .....................................215 Ассоциация belongs_to ............................................................218 Перезагрузка ассоциации ....................................................218 Построение и создание связанных объектов через ассоциацию ...219 Параметры метода belongs_to ..............................................220 Ассоциация has_many .............................................................225 Параметры метода has_many ...............................................225 Методы проксиклассов ......................................................232

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.