使用Sinatra::ConfigFile生成设置时是否可以展开动态属性?
说我有这个logging.yaml:
elasticsearch_url:
development: "http://kibana.#{myVar}.mydomain/elasticsearch/"
production: "http://kibana.mydomain/elasticsearch/"
kibana_url:
development: "http://kibana.#{myVar}.mydomain/kibana/#"
production: "http://kibana.mydomain/kibana/#"
这是一个虚拟的配置:
require 'sinatra/config_file'
configure do
set :default_dashboard, 'mydashboard'
set :myVar, 'st'
config_file 'instances.yaml', 'logging.yaml'
end
现在,当我进入"开发"模式,我希望展开#{myVar}
的所有设置,例如settings.kibana_url
将成为http://kibana.st.mydomain/kibana/#
。
实现这一目标的最佳方法是什么?如果可能的话,我可以通过settings
变量中的值来进行for循环。
(免责声明:我是Ruby的新手,所以完整的例子会有很多帮助。)
答案 0 :(得分:1)
将logging.yaml
重命名为logging.yaml.erb
并使用<%= settings.myVar %>
代替#{myVar}
。瞧!
这是因为Sinatra :: ConfigFile支持Yaml和ERB文件作为输入。