1

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

主文件

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 它会起作用,但是它不再是模块化的了。

4

1 回答 1

0

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

主文件

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[/[^:]+/]
于 2017-09-18T07:49:15.307 回答