2013-04-07 4 views
0

Я использую фреза Espresso с генератором двигателей (Ruby gems). Я создаю новый проект и не понимаю, как работает это приложение. Я буду работать с эспрессо. Объясните мне, пожалуйста, конструктивное приложение Expresso. Я могу запустить эту утилиту: rackup config.ru Я могу редактировать контроллеры, но я не понимаю, в зависимости от рубиновых скриптов в этом проекте.Espresso Enginery

Я запускаю проекты, но почему это работает? config.ru

require File.expand_path('../base/boot', __FILE__) 
puts App.urlmap 
run App 

в проекте не/база/каталог загрузки.

+0

Вы можете спросить что-то более конкретное по поводу одного куска Эспрессо кода вы в настоящее время застрял с? –

+0

http://www.fileshare.ro/e29436630 - приложение создано с Enginery – FrozFox

ответ

0

Файл 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 выглядит следующим образом. , , это не истинный декларативный код. Вместо этого, когда контроллер разбирается, он просто берет блок кода и сообщает объекту приложения его (позже), когда путь совпадает.

+0

Большое спасибо! – FrozFox

1

, требующий '../base/boot', фактически загружает зависимости, контроллеры, модели и т. Д. И создает приложение.

Применение хранятся в App постоянной, так что вы можете получить доступ к нему из разных файлов: https://github.com/espresso/enginery/blob/master/app/base/base/boot.rb#L9

puts App.urlmap будет отображать все маршруты будут обслуживаться приложением.

И run App запустит ваше приложение.

Вы также можете запустить приложение на ruby app.rb, тогда вам не нужно передавать сервер/порт при запуске. Вместо этого вы будете устанавливать их в config/config.yml, как это:

development: 
    server: Thin 
    port: 5252 
+0

спасибо))))))))) – FrozFox

+0

на здоровье :) ждём новых вопросов, предпочтительно тут-же :) – 2013-04-09 14:46:04

Смежные вопросы