我的 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"
任何人都知道为什么会发生这种情况以及如何解决它?