2013-03-26 10 views
6

sinatraを呼び出すときは$ ruby tubemp.rbが動作します。しかし、rackup経由ではありません。アプリケーションは、インラインテンプレートを何とか見つけることができません。エラーが返されるSinatra via rackupはインラインテンプレートが好きではありません

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

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

require './tubemp.rb' 

run Sinatra::Application 

は次のとおりです。どういうわけか

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

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

@@ index 
Welcome! 

tubemp.rbから

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

関連部分、rackupを経由して、それはビューが実際のビュー・ファイルに住むことを期待しています。私はラックマウントがそうであるときに__END__トークンを扱うことができないと思う。

テンプレートをテンプレートファイルに移動する以外はどうすればよいですか?

答えて

4

the docsから:シナトラを必要とするソース・ファイルに定義され

インラインテンプレートが自動的にロードされます。他のソースファイルにインラインテンプレートがある場合は、enable :inline_templatesを明示的に呼び出してください。この場合

あなたがrackupを使用する場合、それはrequire 'sinatra'を呼び出すことあなたのconfig.ruで、シナトラは、任意のテンプレートのために、そのファイルに探していて、任意のを見つけることができません。あなたのアプリケーションファイルを直接実行すると、Sinatraはテンプレートに対してtubemp.rbを検索し、それを探します。それを修正する

、あなたのtubemp.rbファイル(とインラインテンプレートを持っている任意の他のソースファイル)へ

enable :inline_templates 

を追加します。

関連する問題