内联模板不兼容模块化?

时间:2017-02-03 19:39:45

标签: ruby sinatra modular-design

我正在制作模块化应用程序:

  

main.rb的

require "sinatra/namespace"
require "haml"
Dir.glob("servers/*/server.rb").each do |server|
  require_relative server
end

我想做内联模板:

  

服务器/一些/ server.rb

namespace "/some/hello" do
  get "/" do
    haml :index
  end
end

__END__

@@ index
!!!
%html
  hello

但我得到了:

  

没有这样的文件或目录 - views / index.haml

如果我将模板移动到main.rb,它会工作,但它有点不再模块化了。

1 个答案:

答案 0 :(得分:0)

在另一种情况下有同样的错误:

  

main.rb的

require_relative "server_common"

get / do
  haml :index
end

__END__

@@ index
!!!
.....
  

server_common.rb

require "sinatra"
.....

<强>解决方案:

require "sinatra"
set :inline_templates, caller.first[/[^:]+/]

还必须加上这个,因为Sinatra没有自动运行。

set :app_file, caller.first[/[^:]+/]