Ruby on rails YAML::load引发未定义的类/模块错误

Ruby on rails YAML::load引发未定义的类/模块错误,ruby-on-rails,ruby,yaml,psych,Ruby On Rails,Ruby,Yaml,Psych,我正在我的rails应用程序中实现类似于文件跟踪的功能。为了做到这一点,我正在YAML中序列化对象。我有一个item\u at_version方法,它基本上执行YAML::load(cached\u object)——这非常有效,但是,我不知道为什么,有时它返回未定义的类/模块\u类名。 它适用于事件、会话、注释等模型,但没有任何原因,它似乎会在数据集、注释、学生等模型中抛出该错误(我试图找到任何模式,但没有任何运气) 我使用rails 3.2.8、ruby 1.9.3p327和psych作为Y

我正在我的rails应用程序中实现类似于文件跟踪的功能。为了做到这一点,我正在YAML中序列化对象。我有一个
item\u at_version
方法,它基本上执行
YAML::load(cached\u object)
——这非常有效,但是,我不知道为什么,有时它返回
未定义的类/模块\u类名。
它适用于事件、会话、注释等模型,但没有任何原因,它似乎会在数据集、注释、学生等模型中抛出该错误(我试图找到任何模式,但没有任何运气)

我使用rails 3.2.8、ruby 1.9.3p327和psych作为YAML引擎(psych::Version返回1.3.4)

另外,当我在文件顶部添加require'model_name'时,它就像一个符咒

有什么想法我应该改变/添加什么来让它工作吗

编辑: 我可以分享的代码不多:

def item_at_version
  YAML::load(cached_object)
end
但也许回溯会很有趣:

~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:312:in `path2class'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:312:in `resolve_class'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:219:in `visit_Psych_Nodes_Mapping'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in `accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:238:in `visit_Psych_Nodes_Document'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in `accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/nodes/node.rb:35:in `to_ruby'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:128:in `load'
app/models/history_version.rb:7:in `item_at_version'
app/controllers/history_controller.rb:8:in `show'
actionpack (3.2.8) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.8) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.8) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.8) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.8) lib/active_support/callbacks.rb:502:in `_run__1697733322876708236__process_action__1122943786273335015__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.8) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.8) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.8) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.8) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.8) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.8) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.8) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.8) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.8) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.8) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.8) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.8) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.8) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.8) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:36:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:600:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.1) lib/rack/etag.rb:23:in `call'
rack (1.4.1) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/cookies.rb:339:in `call'
activerecord (3.2.8) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.8) lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in `_run__2589517259026276185__call__1369641113040304056__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.8) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
bugsnag (1.2.5) lib/bugsnag/rack.rb:35:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.8) lib/rails/rack/logger.rb:26:in `call_app'
railties (3.2.8) lib/rails/rack/logger.rb:16:in `call'
quiet_assets (1.0.1) lib/quiet_assets.rb:20:in `call_with_quiet_assets'
actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.1) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.8) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.1) lib/rack/lock.rb:15:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/static.rb:62:in `call'
railties (3.2.8) lib/rails/engine.rb:479:in `call'
railties (3.2.8) lib/rails/application.rb:223:in `call'
railties (3.2.8) lib/rails/railtie/configurable.rb:30:in `method_missing'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:147:in `handle'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:99:in `rescue in block (2 levels) in start'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:96:in `block (2 levels) in start'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:86:in `each'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:86:in `block in start'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:66:in `loop'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:66:in `start'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:13:in `run'
~/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:4:in `<main>'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:312:in'path2class'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:312:in'resolve_class'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:219:in'visit_psych_Nodes_Mapping'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in'visit'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in'accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in'accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:238:in'visit_psych_Nodes_Document'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in'visit'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in'accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in'accept'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/nodes/node.rb:35:in'to_ruby'
~/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych.rb:128:in'load'
app/models/history_version.rb:7:in'item_at_version'
app/controllers/history_controller.rb:8:in'show'
actionpack(3.2.8)lib/action\u controller/metal/implicit\u render.rb:4:in'send\u action'
actionpack(3.2.8)lib/abstract\u controller/base.rb:167:in'process\u action'
actionpack(3.2.8)lib/action\u controller/metal/rendering.rb:10:in'process\u action'
actionpack(3.2.8)lib/abstract\u controller/callbacks.rb:18:in'block in process\u action'
activesupport(3.2.8)lib/active\u-support/callbacks.rb:502:in`“u-run\u 1697733322876708236\u-process\u-action\u 1122943786273335015\u-callbacks”
activesupport(3.2.8)lib/active\u support/callbacks.rb:405:in`\uu run\u callback'
activesupport(3.2.8)lib/active\u support/callbacks.rb:385:in``运行\进程\操作\回调'
activesupport(3.2.8)lib/active\u support/callbacks.rb:81:in'run\u callbacks'
actionpack(3.2.8)lib/abstract\u controller/callbacks.rb:17:in'process\u action'
actionpack(3.2.8)lib/action\u controller/metal/rescue.rb:29:in'process\u action'
actionpack(3.2.8)lib/action\u controller/metal/instrumentation.rb:30:in“block in process\u action”
activesupport(3.2.8)lib/active_support/notifications.rb:123:in'block in instrument'
activesupport(3.2.8)lib/active_support/notifications/instrumenter.rb:20:in'instrument'
activesupport(3.2.8)lib/active_support/notifications.rb:123:in'instrument'
actionpack(3.2.8)lib/action\u controller/metal/instrumentation.rb:29:in'process\u action'
actionpack(3.2.8)lib/action_controller/metal/params_wrapper.rb:207:在“过程_动作”中
activerecord(3.2.8)lib/active\u record/railties/controller\u runtime.rb:18:in'process\u action'
actionpack(3.2.8)lib/abstract_controller/base.rb:121:正在进行中
actionpack(3.2.8)lib/abstract_controller/rendering.rb:45:in'process'
actionpack(3.2.8)lib/action_controller/metal.rb:203:in'dispatch'
actionpack(3.2.8)lib/action\u controller/metal/rack\u delegation.rb:14:in'dispatch'
actionpack(3.2.8)lib/action_controller/metal.rb:246:in“block in action”
actionpack(3.2.8)lib/action\u dispatch/routing/route\u set.rb:73:in'call'
actionpack(3.2.8)lib/action_dispatch/routing/route_set.rb:73:in'dispatch'
actionpack(3.2.8)lib/action\u dispatch/routing/route\u set.rb:36:in'call'
旅程(1.0.4)lib/travely/router.rb:68:in“呼叫阻塞”
旅程(1.0.4)lib/travely/router.rb:56:in'each'
旅程(1.0.4)lib/travely/router.rb:56:in'call'
actionpack(3.2.8)lib/action\u dispatch/routing/route\u set.rb:600:in'call'
actionpack(3.2.8)lib/action\u dispatch/middleware/best\u standards\u support.rb:17:in'call'
机架(1.4.1)lib/rack/etag.rb:23:in'call'
rack(1.4.1)lib/rack/conditionalget.rb:25:in'call'
actionpack(3.2.8)lib/action\u dispatch/middleware/head.rb:14:in'call'
actionpack(3.2.8)lib/action_dispatch/middleware/params_parser.rb:21:in'call'
actionpack(3.2.8)lib/action\u dispatch/middleware/flash.rb:242:in'call'
框架(1.4.1)lib/rack/session/abstract/id.rb:205:在“上下文”中
机架(1.4.1)lib/rack/session/abstract/id.rb:200:in'call'
actionpack(3.2.8)lib/action\u dispatch/middleware/cookies.rb:339:in'call'
activerecord(3.2.8)lib/active\u record/query\u cache.rb:64:in'call'
activerecord(3.2.8)lib/active\u record/connection\u adapters/abstract/connection\u pool.rb:473:in'call'
actionpack(3.2.8)lib/action_dispatch/middleware/callbacks.rb:28:in'block in call'
activesupport(3.2.8)lib/active\u support/callbacks.rb:405:in``运行\uuuuuuuuuu2589517259026276185\uuuuuuuuuuuu调用\uuuuuuuuu136964111304030056\uuuuu callbacks'
activesupport(3.2.8)lib/active\u support/callbacks.rb:405:in`\uu run\u callback'
activesupport(3.2.8)lib/active\u-support/callbacks.rb:385:in`_-run\u-call\u-callbacks'
activesupport(3.2.8)lib/active\u support/callbacks.rb:81:in'run\u callbacks'
actionpack(3.2.8)lib/action_dispatch/middleware/callbacks.rb:27:in'call'
actionpack(3.2.8)lib/action_dispatch/middleware/reloader.rb:65:in'call'
actionpack(3.2.8)lib/action\u dispatch/middleware/remote\u ip.rb:31:in'call'
bugsnag(1.2.5)lib/bugsnag/rack.rb:35:in'call'
actionpack(3.2.8)lib/a
/Users/matt/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:312:in `path2class': undefined class/module Bar (ArgumentError)
    from /Users/matt/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:312:in `resolve_class'
...
yamltext = File.read("somefile","r")
yamltext.sub!(/^--- \!.*$/,'---')
hash = YAML.load(yamltext)