调用sinatra本身时,$ 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!
通过某种方式,它希望通过 View 将 View 保存在实际的 View 文件中。我猜想当大约包含时,机架无法处理
__END__
token 。除了将模板移入模板文件之外,我应该如何处理?
最佳答案
从the docs:
在这种情况下,当您使用rackup
时,您的config.ru
会调用require 'sinatra'
,而Sinatra会在该文件中查找任何模板,但找不到任何模板。当您直接运行应用程序文件时,Sinatra会在tubemp.rb
中搜索模板,并找到它们。
要修复它,添加
enable :inline_templates
到
tubemp.rb
文件(以及具有内联模板的任何其他源文件)。