如何在rails application.rb中加载多个YAML文件

时间:2014-01-02 17:24:38

标签: ruby-on-rails ruby ruby-on-rails-3 yaml

我在config /中有很多yaml文件而且我想加载所有yaml文件。

EX:我有两个.yml文件名是:application.ymllinkedin.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文件访问权限。

1 个答案:

答案 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如何使用他们的配置:设置变量系统,因此您不必担心环境变化:)