Тут можно читать онлайн книгу Фултон Хэл - Программирование на языке Ruby - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.
Программирование на языке Ruby - описание и краткое содержание, автор Фултон Хэл, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.
Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии. Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.
Программирование на языке Ruby - читать книгу онлайн бесплатно, автор Фултон Хэл
require 'nitro'require 'controller/book'Nitro.run(BookController)Перезапустите сервер WEBrick и перезагрузите страницу, чтобы посмотреть на результат.
Отметим несколько вещей. Файлы шаблонов могут остаться в папке
publicNitro.runПо умолчанию Nitro ищет шаблоны в каталогах
templatepublicpublictemplateindex.xhtmlpublic/index.xhtmltemplate/index.xhtmlpublicКлассы контроллеров могут отображаться на пути URL с помощью файла
Server.maprun.rbrequire 'nitro'require 'controller/book'Nitro::Server.map = { '/books' => BookController }Nitro.run()Соответствующий шаблон нужно будет переместить в другое место, которое соответствовало бы новому пути (
template/books/index.xhtmlПерезапустите сервер и укажите новый URL:
http://127.0.0.1:9999/booksСейчас самое время создать настоящую страницу сайта, но ради экономии места подавим это желание. Интереснее добавить механизм для запроса данных о нескольких книгах (сколь бы замечательна ни была та, что вы держите в руках). Добавим файл
src/model/book.rbBookclass Book @@items = {} attr_accessor :title attr_accessor :author attr_accessor :update_time def initialize( values = {} ) @title, @author = values[:title], values[:author] @update_time = Time.now end def save @@items[author] = self end def self.find(author) @@items[author] endendТеперь контроллер может запрашивать данные у класса
Bookindexdef index book = Book.find_by_author("Mark Twain") @author = book.author @title = book.title @last_update = book.update_timeendА в файл
run.rbBookrequire 'model/book'Book.new(:title => "Life on the Mississippi", :author => "Mark Twain").saveПосле перезапуска приложения и перезагрузки страницы мы увидим сведения о книге. А если книг больше? Вместо того чтобы «зашивать» в код данные о них, мы можем попросить контроллер выполнить поиск по имени автора. Добавим в него новый метод
finddef find(author) book = Book.find_by_author(author) @author = book.author @title = book.title @last_update = book.update_timeendЭто тот же код, что в методе
indexindex.xhtmlfind.xhtmlNitro::Controller.Сделаем еще одно замечание по поводу методов контроллера. Методы, предназначенные для обработки запросов на получение страницы, обычно идут в паре с шаблонами, имеющими схожее имя. Для получения конечного результата Nitro объединяет метод и шаблон. Мы видели, что Nitro может работать без контроллеров, ограничиваясь только видами. Но верно и обратное. Метод контроллера может генерировать всю страницу вообще без шаблона. Запросы на получение страниц обрабатываются в Nitro как действия (actions). Действие — это комбинация вида и методов контроллера. Внутри себя Nitro динамически создает методы действия, объединяющие то и другое. Но если какой-то компоненты недостает, ничего страшного не случится. Если у действия нет шаблона, результатом становится значение, возвращаемое методом контроллера.
Например, некоторый URL может отвечать на запрос, возвращая лишь название книги. Для этого достаточно такого метода контроллера
BookController