0

我的 Rails 应用程序中的 Settingslogic 有一个奇怪的问题。

我在 config/application.yml 中有这个:

defaults: &defaults
    redis:
        host: localhost
        port: 6379

development:
    <<: *defaults

    session_key: "_app_development"
    session_secret: "blah_blah_blah"

test:
    <<: *defaults

    session_key: "_app_test"
    session_secret: "blah_blah_blah"

这在settings.rb中:

class Settings < Settingslogic
    source "#{Rails.root}/config/application.yml"

    namespace Rails.env
end

当我尝试运行“rails 服务器”或“rails 控制台”时,Settingslogic 会在 sesssion_secret 上引发 MissingSetting 错误。

C:/Ruby/1.9.2/lib/ruby/gems/1.9.1/gems/settingslogic-2.0.6/lib/settingslogic.rb:
117:in `method_missing': Missing setting 'session_secret'
in path-to-app/config/application.yml (Settingslogic::MissingSetting).

我在我的 secret_token.rb 初始化程序中引用了 session_secret。但是,我也在我的应用程序中使用 Resque,并且该初始化程序在 secret_token.rb 之前加载,它可以访问 Redis 设置...

此外,如果我取出默认部分并将值复制到开发和测试部分,Rails 将启动。

像这样:

development:
    redis:
        host: localhost
        port: 6379

    session_key: "_app_development"
    session_secret: "blah_blah_blah"

test:
    redis:
        host: localhost
        port: 6379

    session_key: "_app_test"
    session_secret: "blah_blah_blah"

任何人都知道为什么会发生这种情况以及如何解决它?

4

0 回答 0