Sinatra :: ConfigFile中的动态属性

时间:2015-01-16 13:37:08

标签: ruby sinatra configuration-files

使用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的新手,所以完整的例子会有很多帮助。)

1 个答案:

答案 0 :(得分:1)

logging.yaml重命名为logging.yaml.erb并使用<%= settings.myVar %>代替#{myVar}。瞧!

这是因为Sinatra :: ConfigFile支持Yaml和ERB文件作为输入。