在Rails 4中放置依赖于环境的gem配置的位置?

时间:2014-08-15 18:45:48

标签: ruby-on-rails

我正在使用gem(RTURK),现在我在包装gem的类上有以下代码:

if Rails.env.production?
  RTurk.setup(ENV['AMAZON_KEY_ID'], ENV['AMAZON_KEY'], :sandbox => false)
else
  RTurk.setup(ENV['AMAZON_KEY_ID'], ENV['AMAZON_KEY'], :sandbox => true)
end

我想将其转移到配置/环境/生产和配置/环境/开发和测试

但我不确定在哪一点上我应该放置gem的配置。它需要在config.after_initialize吗?

1 个答案:

答案 0 :(得分:1)

在任何初始值设定项之前加载环境文件(请参阅Rails Initalization Guide)。这意味着您可以在环境文件中设置配置变量,然后在初始化程序中使用它。

在你的情况下,看起来唯一不同的是RTurk是否会被沙箱化。您可以将config.rturk_sandbox = true添加到a​​pplication.rb,将config.rturk_sandbox = false添加到production.rb文件。然后创建config / initializers / rturk.rb,它使用该值。

RTurk.setup(ENV['AMAZON_KEY_ID'], ENV['AMAZON_KEY'], :sandbox => YourApp::Application.config.rturk_sandbox)

(我建议在application.rb中添加config.rturk_sandbox = true,以便在忘记在单个环境文件中设置它时安全起见。)