7

当调用 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!

不知何故,通过机架,它希望视图存在于实际的视图文件中。__END__我猜机架在包含左右时无法处理令牌。

除了将我的模板移动到模板文件中之外,我应该如何处理这个问题?

4

1 回答 1

5

文档

在需要 sinatra 的源文件中定义的内联模板会自动加载。enable :inline_templates如果您在其他源文件中有内联模板,请显式调用。

在这种情况下,当您使用rackup它时config.ru,调用的是您的require 'sinatra',而 Sinatra 正在该文件中查找任何模板,但没有找到任何模板。当您直接运行您的应用程序文件时,Sinatratubemp.rb会搜索模板并找到它们。

要修复它,请添加

enable :inline_templates

到您的tubemp.rb文件(以及任何其他具有内联模板的源文件)。

于 2013-03-26T15:42:11.340 回答