2013-03-26 15 views
6

Podczas połączenia z sinatra działa $ ruby tubemp.rb. Ale nie przez rackup. Aplikacja, w jakiś sposób nie może znaleźć szablonów wbudowanych.Sinatra przez rackup nie lubi wbudowanych szablonów

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

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

require './tubemp.rb' 

run Sinatra::Application 

zwracane Błąd jest:

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

odpowiedniej części od tubemp.rb

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

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

@@ index 
Welcome! 

Jakoś poprzez rackup, że spodziewa widoki żyć w rzeczywistych View-plików. Sądzę, że podczas ładowania nie można obsłużyć tokena __END__.

Jak mam sobie z tym poradzić, a następnie przenieść szablony do plików szablonów?

Odpowiedz

4

Od the docs:

szablony Inline zdefiniowane w pliku źródłowym, który wymaga Sinatra są automatycznie ładowane. Zadzwoń pod enable :inline_templates jawnie, jeśli masz wbudowane szablony w innych plikach źródłowych.

W tym przypadku, gdy używasz rackup to twoja config.ru który wywołuje require 'sinatra' i Sinatra szuka w tym pliku do jakichkolwiek szablonów i nie znaleźć. Po uruchomieniu pliku aplikacji Sinatra przeszukuje szablony pod kątem tubemp.rb i znajduje je.

Aby go naprawić, dodać

enable :inline_templates 

do pliku tubemp.rb (i innych plików źródłowych, które mają wbudowane szablony).