【问题标题】:Determining whether Rails environment was loaded判断是否加载了 Rails 环境
【发布时间】:2013-02-08 14:51:35
【问题描述】:

如何判断 Rails 是否加载了完整环境?例如,特定于环境的配置已完全加载。

我的根本问题是我正在安装一个钩子来捕获特定于环境的配置中的某些异常,但我不想在配置仍在加载时捕获任何异常,以免掩盖任何配置问题.

我发现了一些不令人满意的方法来做到这一点,例如Rails.application.config.middleware 在配置完全加载之前将是一个MiddlewareStackProxy 实例(以及之后的MiddlewareStack),但必须有更直接的方法。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    以下是加载顺序,在我看来,您可能需要在“初始化程序完成”之后设置自己的环境变量,然后在您的代码中检查是否已设置。 http://guides.rubyonrails.org/v2.3.11/configuring.html

    Preinitializers
    environment.rb
    Environment-specific Configuration Files
    Initializers (load_application_initializers)
    After-Initializers
    

    由于您的所作所为,我认为除了消化这部分文档之外别无他法(请参阅 1.14 左右): http://guides.rubyonrails.org/initialization.html#config-environment-rb

    【讨论】:

    • 谢谢,但我的任务确实取决于环境,这不是问题。由于我正在编写框架代码(捕获 Rake 任务引发的异常),我真的需要知道环境是否从加载序列中的任何点加载。
    • 因此,如果您的代码依赖于 env 并且 env 已加载,因为您的条件依赖于它,那么问题是什么?您需要检查 env 中的哪些值?
    • 这与一般的 Rake 任务无关,我正在破解 Rake 本身。你实际上可以看到我在做什么here。我的代码monkeypatches Rake 来捕获异常。但是,一旦在环境加载期间发生了monkeypatch,它将捕获任何异常。我不想这样,我只想在环境加载完成后捕获异常。
    • 谢谢。实现我想要的一个合理的方法是使用后初始化器(使用Rails.application.config.after_initialize)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2015-08-24
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多