rails 3,如何在Settings.yml文件中使用ENVconfigurationvariables?
在我的settings.yml文件中,我有几个configurationvariables,其中一些引用ENV []variables。
例如我有ENV ['FOOVAR']等于WIDGET
我以为我可以像这样在<%%>里面引用ENVvariables:
settings.yml中:
default: cv1: Foo cv2: <% ENV['FOOVAR'] %>
在轨道控制台,如果我input
> ENV['FOOVAR'] => WIDGET
但
> Settings.cv1 => Foo (works okay) > Settings.cv2 =>nil (doesn't work???)
使用以下内容: –
default: cv1: Foo cv2: <%= ENV['FOOVAR'] %>
使用<%= ENV['FOOVAR'] %>
而不是<% ENV['FOOVAR'] %>
。
请注意,这种方法只有在parsingYaml文件的时候才能通过Erb来处理(例如,你可以看到Mongoid如何做到这一点 )。 Yaml文件并没有普遍支持,所以这取决于你使用这个Yaml文件。
上述解决scheme不适合我。 但是,我发现解决scheme如何在YAML文件中使用variables?
我的.yml文件包含像这样的东西:
development: gmail_username: <%= ENV["GMAIL_USERNAME"] %> gmail_password: <%= ENV["GMAIL_PASSWORD"] %>
解决scheme如下所示:
template = ERB.new File.new("path/to/config.yml.erb").read processed = YAML.load template.result(binding)
所以当你在.yml文件中引入scriptlet标签时,它更多的是erb模板。 所以首先阅读它作为一个erb模板,然后加载如上所示的yml。