Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
<h1>The Ruby Way</h1>
<h2>Hal Fulton</h2>
</body>
</html>
Теперь в корневом каталоге приложения создадим файл
run.rb
require 'nitro'
Nitro.run
Чтобы увидеть новое приложение в действии, запустите файл
run.rb
demo/
Если все пройдет удачно, то появится приведенная выше простая страница. Принимайте поздравления — вы создали первое приложения для Nitro! Разумеется, Nitro позволяет делать гораздо больше, поэтому посмотрим, как это приложение можно расширить.
Прежде всего, интерес представляет файл
run.rb
public
Nitro поддерживает много разных архитектур и паттернов, а приложение обычно строится на базе паттерна Модель-Вид-Контроллер (model-view-controller, MVC). Окончательный выбор всегда остается за вами, a Nitro облегчает переход от простых сайтов, предназначенных только для просмотра, к полноценным приложениям с поддержкой базы данных.
По умолчанию при обработке запроса Nitro сначала ищет файл в папке
public
index.html
public
Но интереснее то, что происходит, когда Nitro не может найти прямого соответствия запрошенной странице. Давайте изменим расширение файла
index.html
.xhtml
public/index.xhtml
Перезапустите сценарий
run.rb
index.html
index.xhtml
xhtml
html
xhtml
В 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.rb
src
<app_root>/src/controller/book.rb
class BookController
def index
@author = "Hal Fulton"
@title = "The Ruby Way"
@last_update = Time.new
end
end
Изменим файл
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