Файл config.ru
выглядит вполне нормально для начального файла rack
. Вы бы запустить приложение из папки проекта, с помощью следующей команды:
rackup -p 8080
Следующая строка:
require File.expand_path('../base/boot', __FILE__)
загрузит в файле ../base/boot
(по аналогии с require_relative, но и работает с более старым Рубином например 1.8.7), что, как я полагаю, требует зависимостей, в которых определяется App
. Класс или модуль App
реализует метод call
. Чтобы запустить сервер, хост-хост вызывает App.new
(который вызывается из-за run App
), а затем по каждому запросу он вызывает .call(env)
на результирующем объекте (объект не должен быть объектом App
, но в более простых рамках он будет быть).
Переменная env
содержит все детали запроса и среды стойки, которые могут быть проверены для получения сведений о текущем пути, куках, параметрах запроса и т. Д. Обычно доступ к этим данным абстрагируется с помощью вспомогательных методов Sinatra и Espresso, которые вы будете использовать.
Методы помощника Sinatra и Espresso выглядят так, как будто они делают магические объявления, но это обычные методы. Обычно они выполняют некоторые вычисления, а затем закладывают блок кода/лямбда для стойки, чтобы позвонить позже. Sinatra's get
выглядит следующим образом. , , это не истинный декларативный код. Вместо этого, когда контроллер разбирается, он просто берет блок кода и сообщает объекту приложения его (позже), когда путь совпадает.
Вы можете спросить что-то более конкретное по поводу одного куска Эспрессо кода вы в настоящее время застрял с? –
http://www.fileshare.ro/e29436630 - приложение создано с Enginery – FrozFox