Sinatra::ConfigFile 中的动态属性
Dynamic properties in Sinatra::ConfigFile
使用 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/#"
这是一个假人 config.ru:
require 'sinatra/config_file'
configure do
set :default_dashboard, 'mydashboard'
set :myVar, 'st'
config_file 'instances.yaml', 'logging.yaml'
end
现在,当我在 "development" 模式下 运行 时,我希望扩展所有带有 #{myVar}
的设置,例如settings.kibana_url
会变成 http://kibana.st.mydomain/kibana/#
.
实现此目标的最佳方法是什么?如果可能的话,我可以通过 settings
变量中的值进行 for 循环。
(免责声明:我是 Ruby 的新手,所以完整的示例会有很大帮助。)
将 logging.yaml
重命名为 logging.yaml.erb
并使用 <%= settings.myVar %>
而不是 #{myVar}
。瞧!
这是因为Sinatra::ConfigFile同时支持 Yaml 和 ERB 文件作为输入。
使用 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/#"
这是一个假人 config.ru:
require 'sinatra/config_file'
configure do
set :default_dashboard, 'mydashboard'
set :myVar, 'st'
config_file 'instances.yaml', 'logging.yaml'
end
现在,当我在 "development" 模式下 运行 时,我希望扩展所有带有 #{myVar}
的设置,例如settings.kibana_url
会变成 http://kibana.st.mydomain/kibana/#
.
实现此目标的最佳方法是什么?如果可能的话,我可以通过 settings
变量中的值进行 for 循环。
(免责声明:我是 Ruby 的新手,所以完整的示例会有很大帮助。)
将 logging.yaml
重命名为 logging.yaml.erb
并使用 <%= settings.myVar %>
而不是 #{myVar}
。瞧!
这是因为Sinatra::ConfigFile同时支持 Yaml 和 ERB 文件作为输入。