【问题标题】:What is the best way to manage configurations in Ruby on Rails?在 Ruby on Rails 中管理配置的最佳方式是什么?
【发布时间】:2011-05-06 04:16:31
【问题描述】:

我有一个应用程序,它有很多要管理的 api 键和设置,它们是使用初始化程序加载的。因为它们对于每个环境都不同,所以我无法在 environment.rb 文件中设置常量。 (我试过了;没有用。)所以我在每次部署之前手动开始评论和取消评论,这很乏味。我想知道在您必须处理初始化程序中加载的多个配置设置的情况下,最佳实践是什么。

【问题讨论】:

    标签: ruby-on-rails configuration


    【解决方案1】:

    如果请求来自本地,您可以在 environment.rb 中设置密钥:

    Rails::Initializer.run do |config| 
        if local_request?
           CONSTANT1 = 10
        else
           CONSTANT1 = 20
        end 
    end
    

    这将检查您是否在localhost 上,即localhost:3000,您的开发环境。如果是这样,那么 if/else 语句将选择要设置的常量。

    另一种选择是在环境文件夹中设置常量,这可能是一个更好的主意

    所以对于您的生产常量,请将它们放在config/environments/production.rb

    对于您的开发常量,请将它们放入 config/environments/development.rb

    【讨论】:

    • 今晚只有我们两个回答 RoR 问题吗? :P
    • 您如何看待将这些拆分为environments/dev.rb 和environments/prod.rb?它不会污染全局配置文件。
    • 大声笑,我想这只是我们。我同意。可能对组织更好。
    • 你能解释一下这会做什么吗?你所说的变量是指常量吗?我没有意识到你可以设置全局变量值(小写)。
    • 我认为这会起作用,但我仍然从其中一个初始化程序中得到 config/initializers/omniauth.rb:4: uninitialized constant 错误,该初始化程序在如下块中定义:Rails.application。 config.middleware.use OmniAuth::Builder do ... end
    【解决方案2】:

    您应该在初始化程序文件中设置这些常量,您可以在初始化程序目录下创建这些文件。然后,使用环境目录下的环境特定配置文件为每个环境设置它们。

    【讨论】:

      猜你喜欢
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      相关资源
      最近更新 更多