2013-03-26 3 views
6

साइनरा को स्वयं कॉल करते समय, $ ruby tubemp.rb काम करता है। लेकिन 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.ru कि require 'sinatra' कहता है, और सिनात्रा किसी भी टेम्पलेट्स के लिए उस फ़ाइल में लग रही है, और किसी भी नहीं मिल रहा है है। जब आप अपनी ऐप फ़ाइल सीधे चलाते हैं तो सिनात्रा टेम्पलेट्स के लिए tubemp.rb खोजता है, और उन्हें पाता है।

इसे ठीक करने के लिए, अपने tubemp.rb फ़ाइल (और है कि इनलाइन टेम्पलेट्स किसी अन्य स्रोत फ़ाइलें) को

enable :inline_templates 

जोड़ें।

संबंधित मुद्दे