Мое упрощенное понимание стека Rails заключается в том, что он делает следующее (в общем):
- Ввод представляет собой HTTP-сообщение (GET, POST, PUT, DELETE, HEAD), URL-адрес, некоторые (необязательные) файлы cookie, (необязательный) токен сеанса и, возможно, некоторые данные, упакованные в формате JSON или XML.
- Это HTTP-сообщение обрабатывается Rack, который может запускать его через набор функций «промежуточного программного обеспечения», которые добавляют или удаляют данные из сообщения и могут использовать данные для добавления, изменения или удаления данных из хранилища данных программы.
- HTTP-сообщение на выходе Rack отправляется на маршрутизатор Rails, который сопоставляет его с контроллером, действием и хэшем параметров с информацией о сеансе, файлами cookie и другими параметрами. Данные отправляются соответствующему контроллеру.
- Метод контроллера анализирует параметры и алгоритмически объединяет их с данными из базы данных (через модели), при необходимости изменяет данные, а затем отправляет набор переменных, начинающихся с @, в шаблон представления.
- Шаблон представления берет данные и объединяет их с шаблоном представления для формирования представления в соответствующем формате (например, HTML, JS, JSON, XML и т. д.) или указывает вызывающей стороне (через код возврата HTTP) перенаправить на другой URL.
То, что я хотел бы сделать с моим веб-приложением Rails, используя консоль Rails,
- Составьте действительное HTTP-сообщение с URL-адресом, идентификаторами сеанса, файлами cookie и закодированными данными (JSON или XML).
- Вставьте эти данные в интерфейс Rack и проверьте, что выходит, прежде чем они будут отправлены на маршрутизатор Rails.
- Затем я хотел бы отправить эти данные на маршрутизатор Rails и посмотреть, что получится, прежде чем они попадут на контроллер.
- Затем я хотел бы отправить эти данные в контроллер и посмотреть, что получится, прежде чем они будут отправлены в шаблон представления.
- И затем я хотел бы взять эти данные и запустить их через шаблон представления и отобразить на STDOUT или автоматически открыть веб-браузер и увидеть, как они отображаются.
Существуют ли какие-либо существующие инструменты Rails, которые могут это сделать? Если нет, может ли кто-нибудь указать мне на код Rails, где встречаются эти интерфейсы?