我在 config/中有很多 yaml 文件,我想加载所有 yaml 文件。
例如:我有两个 .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 文件。
最佳答案
假设您的 YAML 文件位于 config
文件夹中,在您的 application.rb 中,您可以在 require 下(在模块定义之前)执行此操作
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 "]
这是处理您不想 checkin 源代码管理的常量的好方法,但实际上我发现使用 Figaro是处理常量的最佳方式。本质上,Figaro 将自动生成/加载一个 application.yml,您所要做的就是将您的常量放在那里。
在此之后,您可以使用 ENV["LINKED_IN_SECRET"] 访问 - 作为一个加号,这模拟了 Heroku 如何使用他们的配置:设置变量系统,因此您不必担心环境变化:)
关于ruby-on-rails - 如何在 rails application.rb 中加载多个 YAML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888236/