Ruby on rails 如何正确存储和访问全局应用程序配置设置?

Ruby on rails 如何正确存储和访问全局应用程序配置设置?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在编写rails 4应用程序的过程中,我最近一直想知道在哪里以及如何准确地存储自定义配置信息?具体来说,我指的是像应用程序标题、特殊电子邮件地址、可能的主题选项等,我想在整个应用程序中使用环境变量或其他结构来引用这些内容。在部署之前,我已经仔细研究了一下,最终使用了一个漂亮的初始化器创建了一个类似这样的OpenStruct require 'ostruct'

在编写rails 4应用程序的过程中,我最近一直想知道在哪里以及如何准确地存储自定义配置信息?具体来说,我指的是像应用程序标题、特殊电子邮件地址、可能的主题选项等,我想在整个应用程序中使用环境变量或其他结构来引用这些内容。在部署之前,我已经仔细研究了一下,最终使用了一个漂亮的初始化器创建了一个类似这样的OpenStruct

require 'ostruct'                                                                                                                                                                    

all_config = YAML.load_file("#{Rails.root}/config/app_config.yml") || {}
env_config = all_config[Rails.env] || {}
AppConfig = OpenStruct.new(env_config)
它读取以下yaml文件(app_config.yml)

default:&default
概述:
应用程序名称:MyName
维护人员电子邮件地址:someone@somewhere.org
发展:

RAILS\u ROOT/config
目录中添加配置文件

# config/foo.yml
development:
 api_key: 'my_development_api_key'

staging:
  api_key: <%= ENV['API_KEY'] %>

production:
  api_key: <%= ENV['API_KEY'] %>
在代码中使用您的配置

Rails.configuration.foo.api_key

有时您无法在代码中提交密钥和其他凭据。在这种情况下,请使用环境变量。我使用gem来管理环境变量。

谢谢你的提示。不幸的是,它没有回答问题1和2。你有什么线索吗?
# config/initializers/foo.rb
foo_config = Rails.application.config_for(:foo)

Rails.application.configure do
  config.foo = ActiveSupport::OrderedOptions.new
  config.foo.api_key = foo_config[:api_key]
end
Rails.configuration.foo.api_key