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 server" または "rails console" を実行しようとすると、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 設定にアクセスできます...

さらに、defaults セクションを取り出して値を development セクションと test セクションにコピーすると、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