2013-03-26 1 views
6

При вызове самой синатра $ ruby tubemp.rb работает. Но через rackup это не так. Приложение, так или иначе, не может найти встроенные шаблоны.Sinatra через rackup не любит встроенные шаблоны

#config.ru 
require 'rubygems' 
require 'sinatra' 

set :environment, ENV['RACK_ENV'].to_sym 
disable :run, :reload 

require './tubemp.rb' 

run Sinatra::Application 

Ошибка возвращается в:

No such file or directory - /home/ber/Documenten/ET_tubemp/code/views/index.erb: 

Соответствующая часть из tubemp.rb

get '/' do 
    #... 
    erb :index 
end 

__END__ 
@@ layout 
<html> 
... 
<%= yield %> 

@@ index 
Welcome! 

Так или иначе, через rackup, он ожидает, что взгляды жить в реальном просмотре-файлах. Я полагаю, что при включении или сбое на стойке не удается обработать маркер __END__.

Как я должен иметь дело с этим, а затем перемещать шаблоны в файлы шаблонов?

ответ

4

От the docs:

шаблоны Инлайн, определенные в исходном файле, который требует Синатра автоматически загружаются. Вызовите enable :inline_templates явно, если у вас встроенные шаблоны в других исходных файлах.

В этом случае, когда вы используете rackup это ваш config.rurequire 'sinatra', который вызывает, и Синатра ищет в этом файле для любых шаблонов, и не найти. При запуске вашего файла приложения напрямую Sinatra ищет tubemp.rb для шаблонов и находит их.

Чтобы это исправить, добавьте

enable :inline_templates 

к вашему tubemp.rb файл (и любые другие файлы, которые имеют встроенные шаблоны).