我的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设置......
此外,如果我取出默认值部分并复制值 到开发和测试部分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"
任何人都知道为什么会发生这种情况以及如何解决这个问题?