我可以在 Sinatra 中将内联模板作为字符串获取吗?

Can I get inline template as string in Sinatra?

动机

Sinatra 中的内联模板非常方便(对我来说)。

如果可以将那里的内容提取为字符串, 预计会有更多的应用。

示例

在此代码中显示我的意图

require "sinatra"
require "sinatra/json"
require "yaml"

get "/" do
  content_type :json
  data = YAML.load inline_template_as_raw_string(:my_yaml)
  json data
end

__END__
@@my_yaml
foo:
  bar: baz

@@my_something
hello

有什么想法吗?

Sinatra 将原始加载的模板存储在名为 templates 的设置变量中。您可以按如下方式访问它们:

require "sinatra"
require "sinatra/json"
require "yaml"

get "/" do
  content_type :json
  data = YAML.load settings.templates[:my_yaml][0]
  json data
end

__END__
@@my_yaml
foo:
  bar: baz

@@my_something
hello

settings.templates 包含一个以模板名称作为键的哈希和一个包含原始模板和定义它的行号的数组。