我将rails从3.1升级到3.2并在我的environment / development.rb文件中添加了以下内容:
# Raise exception on mass assignment protection for Active Record models
config.active_record.mass_assignment_sanitizer = :strict
# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5
添加在尝试启动服务器时返回此错误:
/User/oprogfrogo/.rvm/gems/ruby-1.9.2-p180@rails32/gems/railties-3.2.0/lib/rails/railtie
/configuration.rb:85:in `method_missing': undefined method `active_record' for
#<Rails::Application::Configuration:0x00000101305e88> (NoMethodError)
当我删除它时,一切都很好。为什么会这样?
答案 0 :(得分:3)
我发现了问题。我的应用程序最初设置为排除活动记录,只是一个非数据库支持的应用程序。
答案 1 :(得分:0)
很奇怪,但请查看method_missing
中的lib/rails/railtie/configuration.rb
方法。
def method_missing(name, *args, &blk)
puts "in configuration.rb:method_missing" # <= try to add these debug lines
puts name
puts args
if name.to_s =~ /=$/
@@options[$`.to_sym] = args.first
elsif @@options.key?(name)
@@options[name]
else
super # <= 85 line
end
end
我猜测name.to_s =~ /=$/
应该是true
但不是,它会检查以=
结尾的方法。尝试在方法的开头添加一些调试日志,看看你是否可能在配置变量名中意外地包含了一些奇怪的字符。