【问题标题】:How do I access a Rails configuration value during runtime?如何在运行时访问 Rails 配置值?
【发布时间】:2011-05-18 05:09:58
【问题描述】:

我使用的是 Rails 2.3.x。当且仅当config.cache_classes 为真时,我希望运行一小段代码。默认情况下,生产环境为 true,开发环境为 false。

如何从我的 environment.rb、development.rb 和 production.rb 文件外部访问 config.cache_classes 的值?很容易判断我们是在生产还是开发,Rails.env 会给我们答案。但不能保证开发者没有在开发中设置config.cache_classes = true

我当然理解您通常不希望在开发和生产中运行单独的代码路径。在这种特殊情况下,我们根本没有在启动时执行一些工作;如果我们以后需要执行它,我们会在开发和生产中这样做。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    对于 Rails 2,您可以:

    Rails.configuration.cache_classes
    

    如果您曾经切换到 Rails 3,情况会有所不同;您可以通过以下方式访问相同的值:

    Rails.application.config.cache_classes
    

    【讨论】:

    • 嘿。知道这将是显而易见的事情。我尝试了 Rails.config,没想到要尝试。谢谢。一旦时间限制到期,我将接受这个答案。
    • perform_caching有一个异常,也可以按控制器设置,所以应该按控制器访问
    • 对我来说是MyApp::Application.config.foo (Rails 4.1)。
    • 据我所知,它们是相同的at least,因为Rails 3.0.20
    【解决方案2】:

    根据您在模块中的位置,您可能需要访问根命名空间。这应该以通用方式为 rails 3+ 提供从任何地方的访问权限:

    ::Rails.application.config

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-23
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多