我在config /中有很多yaml文件而且我想加载所有yaml文件。
EX:我有两个.yml文件名是:application.yml
和linkedin.yml
。我想用application.rb
加载这两个文件。
为了实现这个目标,我在application.rb中编写了代码:
ENV.update YAML.load_file('config/application.yml')[Rails.env] rescue {}
ENV.update YAML.load_file('config/linkedin.yml')[Rails.env] rescue {}
但这不合适,请建议我如何使用ENV
变量加载所有yaml文件访问权限。
答案 0 :(得分:2)
假设您的YAML文件放在config
文件夹中,在您的application.rb中,您可以根据要求(在模块定义之前)执行此操作
APP_YAML = YAML::load_file(File.join(File.dirname(File.expand_path(__FILE__)), 'application.yml'))
LINKED_IN = YAML::load_file(File.join(File.dirname(File.expand_path(__FILE__)), 'linked_in.yml'))
这样,您就可以在应用程序中随处可用的常量中访问文件的内容,即。 LINKED_IN["secret"]
这是处理您不想签入源代码控件的常量的好方法,但实际上我发现使用Figaro是处理常量的最佳方法。从本质上讲,Figaro将自动生成/加载application.yml,您所要做的就是将常量放在那里。
在此之后,您可以使用ENV [“LINKED_IN_SECRET”]进行访问 - 作为一个加号,这模拟了Heroku如何使用他们的配置:设置变量系统,因此您不必担心环境变化:)