我想知道如何将自定义配置变量添加到Rails应用程序,以及如何在控制器中访问它们?

其次,我计划在我的应用程序中有S3支持上传,如果我想添加一个具有S3访问权限的yaml文件,秘密密钥,我如何在我的Rails应用程序中初始化它,以及如何访问我在配置文件中定义的值。


当前回答

在Rails 3.0.5中,以下方法对我来说是有效的:

在config /环境/发展。rb,写

config.custom_config_key = :config_value

值custom_config_key然后可以从其他文件引用

Rails.application.config.custom_config_key

其他回答

我喜欢使用rails-settings用于需要通过web界面更改的全局配置值。

在Rails 3.0.5中,以下方法对我来说是有效的:

在config /环境/发展。rb,写

config.custom_config_key = :config_value

值custom_config_key然后可以从其他文件引用

Rails.application.config.custom_config_key

如果您使用Heroku,或者需要将应用程序设置作为环境变量,那么figaro gem非常有用。

从Rails 4.2开始,没有额外的宝石,你可以加载config/hi。简单地使用Rails.application。config_for:嗨。

例如:

触控配置/ passwords.yml #配置/ passwords.yml 发展: 用户名:‘一个’ 密码:“b” 生产: 用户名:“aa” 密码:“bb”

配置初始化/ constants.rb联系 #配置/初始化/ constants.rb AUTHENTICATION = Rails.application。config_for:密码

现在你可以在应用程序的任何地方使用AUTHENTICATION常量: #rails c生产 :001> AUTHENTICATION['username'] => 'aa' 然后添加密码。Yml到。gitignore: echo /config/passwords。Yml >> .gitignore,为你的cp /config/密码创建一个示例文件。yml / config / passwords.example。Yml,然后在生产控制台中使用实际的生产值编辑示例文件。

这适用于rails 3.1:

在config /环境。Rb(或在config/environments/..以特定环境为目标):

YourApp::Application.config.yourKey = 'foo'

这将在控制器或视图中访问,如下所示:

YourApp::Application.config.yourKey

(YourApp应替换为您的应用程序名称。)

注意:它是Ruby代码,所以如果你有很多配置键,你可以这样做:

在config /环境。rb:

YourApp::Application.configure do
  config.something = foo
  config.....
  config....
  .
  config....
end