【问题标题】:Config variables available in rails environment filerails 环境文件中可用的配置变量
【发布时间】:2012-03-04 22:49:07
【问题描述】:

我目前正在使用初始化程序将 config.yml 文件加载到 AppConfig 哈希中,该哈希提供对环境变量的访问。对于生产,我使用服务器上设置的环境变量。如果未设置环境变量(即在开发和测试中),我将使用以下代码回退到配置变量。

ENV['FACEBOOK_API_KEY'] || AppConfig['facebook_api_key']

我的问题是我需要在特定于环境的文件(development.rb/production.rb 等)中提供其中一些变量,但这个文件是在初始化程序之前加载的。我该如何处理?

【问题讨论】:

    标签: ruby-on-rails ruby config environment initializer


    【解决方案1】:

    查看Configuration Initialization Events 的 Rails 指南。在进行此类配置时,您可以挂钩一些事件。

    简而言之,您可以在初始化后完成环境配置:

    #config/environments/development.rb
    YourApp::Application.configure do
      config.after_initialize do
        #do some configuration after all initialisers have run
      end
    end
    

    【讨论】:

    • 谢谢。这正是我所需要的。它实际上是 after_initialize 而不是 after_initializion 顺便说一句。
    • 哈-谢谢。我正在考虑拼写美国风格的初始化,我的手指决定改为输入初始化。
    【解决方案2】:

    如果有办法创建像database.yml 这样的两层结构,您始终可以在同一个文件中为每个环境定义单独的配置,然后引用适当的版本:

    ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']
    

    【讨论】:

    • 谢谢,但这实际上是我正在做的,只是我没有为环境使用单独的哈希,因为我不需要一次存储多个配置值。
    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2020-01-24
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    相关资源
    最近更新 更多