如何定义在轨自定义配置变量(How to define custom configuration v

2019-07-18 15:40发布

我想知道如何自定义配置变量添加到Rails应用程序,以及如何访问它们的控制器,用于例如,我想能够在配置文件中定义的upload_directory说development.rb并能够访问它在我的一个控制器。

其次我正打算对上传S3支持我的应用程序,如果我想添加一个YAML文件与S3访问,密钥,我该如何初始化它在我的Rails应用程序以及如何访问我已定义的值在配置文件中。

Answer 1:

更新1

很推荐:我要与Rails的配置宝石时下它提供的细粒度控制。

UPDATE2

如果你想快速的解决方案,然后再检查杰克·普拉特的答案如下。

虽然我原来的答复下面仍然有效,这个答案现在已经过时。 我建议在寻找更新1和2。

原来的答案:

对于一个快速的解决方案,看“YAML配置文件” 抓屏由Ryan贝茨应该是非常有帮助的。

综上所述:

# config/initializers/load_config.rb
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]

# application.rb
if APP_CONFIG['perform_authentication']
  # Do stuff
end


Answer 2:

在Rails 3,应用特定的自定义配置数据可以被放置在应用程序配置对象。 该配置可以在初始化文件或环境的文件分配-说给定的应用MyApp

MyApp::Application.config.custom_config_variable = :my_config_setting

要么

Rails.configuration.custom_config_variable = :my_config_setting

要阅读设置,只需调用配置变量没有设置它:

Rails.configuration.custom_config_variable
=> :my_config_setting

UPDATE轨道4

在轨道4一个用于此的新途径=> http://guides.rubyonrails.org/configuring.html#custom-configuration



Answer 3:

在Rails 3.0.5,以下办法为我工作:

config/environments/development.rb ,写

config.custom_config_key = :config_value

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

Rails.application.config.custom_config_key


Answer 4:

这适用于轨道3.1:

在配置/ environment.rb中(或在配置/环境/ ..来定位特定环境):

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

这将是在控制器或视图存取方式如下:

YourApp::Application.config.yourKey

(YourApp应该由你的应用程序的名称所取代。)

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

在到config / environment.rb:

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


Answer 5:

在Rails 4

假设你把你的自定义变量到YAML文件:

# config/acme.yml
development:
  :api_user: 'joe'
  :api_pass: 's4cret'
  :timeout: 20

创建初始化加载它们:

# config/initializers/acme.rb
acme_config = Rails.application.config_for :acme

Rails.application.configure do
  config.acme = ActiveSupport::OrderedOptions.new
  config.acme.api_user = acme_config[:api_user]
  config.acme.api_pass = acme_config[:api_pass]
  config.acme.timeout  = acme_config[:timeout]
end

现在,在您的应用程序的任何地方,您可以访问像这样这些值:

Rails.configuration.acme.api_user

这是方便的Rails.application.config_for :acme ,将载入您acme.yml并使用正确的环境。



Answer 6:

由于Rails的4.2,无需额外的宝石,你可以加载配置/ hi.yml只需使用Rails.application.config_for :hi

例如:

  1. touch config/passwords.yml

      #config/passwords.yml development: username: 'a' password: 'b' production: username: 'aa' password: 'bb' 
  1. touch config/initializers/constants.rb

     #config/initializers/constants.rb AUTHENTICATION = Rails.application.config_for :passwords 
  1. 现在你可以使用AUTHENTICATION在你的应用无处不在常数:

     #rails c production :001> AUTHENTICATION['username'] => 'aa' 
  2. 然后加入passwords.yml的.gitignore: echo /config/passwords.yml >> .gitignore ,为您创造舒适的示例文件cp /config/passwords.yml /config/passwords.example.yml ,然后只需编辑您的示例文件在实际生产价值的生产控制台。



Answer 7:

我只是想用Rails 4.2更新这个最新的很酷的东西,你现在可以做这里面你的任何config/**/*.rb文件:

config.x.whatever.you.want = 42

...这将在您的应用程序为可用:

Rails.configuration.x.whatever.you.want

查看更多在这里: http://guides.rubyonrails.org/configuring.html#custom-configuration



Answer 8:

看看这个整齐的宝石正是这样做的: https://github.com/mislav/choices

这样,你的敏感数据不会在开源项目被曝光



Answer 9:

我创建了YAML设置一个简单的插件: Yettings

它的工作原理类似的方式在khelll的答案代码,但你只需要添加此YAML配置文件:

app/config/yetting.yml

插件动态创建一个类,允许您访问您的应用程序的YML设置为类方法,如下所示:

Yetting.your_setting

另外,如果你想使用多个设置具有独特名称的文件,你可以将它们放置在这样的应用程序/配置一个子目录:

app/config/yettings/first.yml
app/config/yettings/second.yml

然后,你可以访问这样的价值观:

FirstYetting.your_setting
SecondYetting.your_setting

它也为您提供了可以为每个环境覆盖默认设置。 您还可以使用再培训局的YML文件中。



Answer 10:

我真的很喜欢settingslogic宝石。 非常容易设置和使用。

https://github.com/binarylogic/settingslogic



Answer 11:

如果您使用的Heroku或以其他方式都需要保持你的应用程序设置为环境变量,该费加罗宝石是非常有帮助的。



Answer 12:

我喜欢用轨道的设置为需要经由web界面改变的全局配置值。



Answer 13:

这是我们已经开始在工作中做的是的ActiveSupport有序哈希

它允许你定义干净环境内的文件配置如

config.service = ActiveSupport::OrderedOptions.new
config.service.api_key = ENV['SERVICE_API_KEY']
config.service.shared_secret = ENV['SERVICE_SHARED_SECRET']


Answer 14:

我建议好方法,如何在你的应用程序处理的配置都没有。 有三种基本的规则:

  • 改变你的配置不是一个代码;
  • 使用过的条件配置;
  • 编写代码,这意味着什么。

为了有更详细的介绍请点击此链接: 在适当的方式配置的Rails



文章来源: How to define custom configuration variables in rails