Текущее развитие событий
Вкратце рассмотрим работу созданного приложения.
1. Пользователь переходит к работе с приложением, воспользовавшись в нашем
случае локальным URL http://localhost:3000/say/hello.
2. Rails проводит анализ URL. Фрагмент say воспринимается как имя контроллера,
поэтому Rails создает новый экземпляр Ruby-класса SayController (который
находит в файле app/controllers/say_controller.rb).
3. Следующий фрагмент URL, hello, рассматривается как идентификатор действия.
Rails вызывает в контроллере метод с таким же названием. Этот метод,
определяющий действие, создает новый объект Ti me, содержащий текущее время,
и прячет его содержимое в переменную экземпляра @time.
4. Rails ищет шаблон, чтобы отобразить результат. Она просматривает каталог
app/views на наличие подкаталога с именем, аналогичным имени контроллера
(say), а в этом подкаталоге ищет файл, названный по имени действия (hello.rhtml).
5. Rails обрабатывает найденный шаблон с использованием ERb, исполняя все
Ruby-вставки и подставляя значения, установленные контроллером.
6. Результат возвращается браузеру, и Rails завершает обработку данного запроса.
Но история еще не окончена — Rails предоставляет нам массу возможностей
для внесения изменений в основную последовательность выполняемых действий
(и мы отчасти этим воспользуемся). Наша история является типичным примером
использования соглашения по конфигурации, одной из основополагающих
составляющих философии Rails. Благодаря тому, что Rails-приложениям предоставляются
удобные исходные настройки, а при их разработке применяются
определенные соглашения, эти приложения создаются, как правило, с незначительным
использованием или вовсе без использования внешних конфигурационных
настроек, что позволяет вполне естественным образом связывать их в единое
целое.