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

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

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

例如:我有两个 .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 文件。

最佳答案

假设您的 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/

相关文章:

ruby-on-rails - 命名空间修改后表单损坏

ruby-on-rails - 如何使用户只能使用 Devise 编辑/查看属于他们的项目?

java - 如何使用 JRuby 正确打包?

ruby - curl 从命令行运行,但不在 ruby​​ 脚本中运行

ruby-on-rails - rails : How to generate translation files like django

mysql - 查询具有链接数据的多个表

ruby-on-rails - Rails 4 – 如何从 NoMethodError 中解救并继续尝试方法?

ruby-on-rails - sidekiq 进程中的 Rails.cache.read

ruby-on-rails-3 - ActiveRecord::Base#create - 类型错误:无法将符号转换为整数

javascript - 如何在rails中发送post请求并接收返回的json