2013-03-26 18 views
6

當調用sinatra本身時,$ ruby tubemp.rb工作。但通過rackup它沒有。該應用程序以某種方式無法找到內聯模板。Sinatra通過機架不喜歡內聯模板

#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,它預計的意見,住在實際的視圖文件。我猜想當包括左右時,rackup不能處理令牌。

我應該如何處理這個問題,然後將我的模板移動到模板文件中?

回答

4

the docs:引入sinatra被自動加載的源文件中定義

內聯模板。如果您在其他源文件中有嵌入式模板,請明確呼叫enable :inline_templates

在這種情況下,當你使用rackup這是你config.ru調用require 'sinatra'和西納特拉期待在該文件中對任何模板,並沒有發現任何。當您直接運行應用程序文件時,Sinatra會搜索tubemp.rb以獲取模板,並找到它們。

爲了解決這個問題,添加

enable :inline_templates 

tubemp.rb文件(有內聯模板任何其他源文件)。