调用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文件(以及具有内联模板的任何其他源文件)。

10-08 00:44