Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
<h1>The Ruby Way</h1> <h2>Hal Fulton</h2> </body></html>Теперь в корневом каталоге приложения создадим файл
run.rbrequire 'nitro'Nitro.runЧтобы увидеть новое приложение в действии, запустите файл
run.rbdemo/Если все пройдет удачно, то появится приведенная выше простая страница. Принимайте поздравления — вы создали первое приложения для Nitro! Разумеется, Nitro позволяет делать гораздо больше, поэтому посмотрим, как это приложение можно расширить.
Прежде всего, интерес представляет файл
run.rbpublicNitro поддерживает много разных архитектур и паттернов, а приложение обычно строится на базе паттерна Модель-Вид-Контроллер (model-view-controller, MVC). Окончательный выбор всегда остается за вами, a Nitro облегчает переход от простых сайтов, предназначенных только для просмотра, к полноценным приложениям с поддержкой базы данных.
По умолчанию при обработке запроса Nitro сначала ищет файл в папке
publicindex.htmlpublicНо интереснее то, что происходит, когда Nitro не может найти прямого соответствия запрошенной странице. Давайте изменим расширение файла
index.html.xhtmlpublic/index.xhtmlПерезапустите сценарий
run.rbindex.htmlindex.xhtmlxhtmlhtmlxhtmlВ XHTML-файлах могут быть подставляемые переменные и программная логика. Измените файл
index.xhtml<html> <head> <title>Nitro!</title> </head> <body> <h1>The Ruby Way</h1> <h2>Hal Fulton</h2> <p>Page last updated: #{Time.now}</p> </body></html>После перезагрузки страницы вы увидите текущие дату и время. Nitro также поддерживает синтаксис команд обработки, принятый в XML:
<?r curr_date = Time.new.strftime( "%a, %b %d, %Y") ?><html> <head> <title>Nitro!</title> </head> <body> <h1>The Ruby Way</h1> <h2>Hal Fulton</h2> <p>Page last updated: #{curr_date}</p> </body></html>Отметим, что из наличия синтаксиса
<?r ... ?>19.4.2. Nitro и паттерн MVC
Вставка кода непосредственно в шаблон удобна для экспериментов и перехода со статических страниц на динамические. Но со временем обнаруживается, что тестировать и сопровождать такое приложение становится все сложнее. Паттерн Модель-Вид-Контроллер позволяет упростить жизнь за счет переноса кода в классы Ruby.
Начнем с создания класса контроллера
main.rbsrc<app_root>/src/controller/book.rbclass BookController def index @author = "Hal Fulton" @title = "The Ruby Way" @last_update = Time.new endendИзменим файл
index.xhtml<html> <head> <title>Nitro!</title> </head> <body> <h1>#{@title}</h1> <h2>#{@author}</h2> <p>Page last updated: #{@last_update}</p> </body></html>Придется также немного подправить файл
run.rb
