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"
なぜこれが起こっているのか、それを修正する方法を知っている人はいますか?