ruby – 用于Rails 3 db:migrate的未定义方法`visitor’

前端之家收集整理的这篇文章主要介绍了ruby – 用于Rails 3 db:migrate的未定义方法`visitor’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Rails 3中进行数据库迁移时遇到异常.
  1. undefined method `visitor' for #<ActiveRecord::ConnectionAdapters::MysqL2Adapter:0x00000103dea3d8>

编辑

请检查解决方here.

在我的项目中没有出现字符串访问者所以我很困惑.

这是完整的转储:

  1. $rake db:migrate --trace
  2. ** Invoke db:migrate (first_time)
  3. ** Invoke environment (first_time)
  4. ** Execute environment
  5. ** Invoke db:load_config (first_time)
  6. ** Invoke rails_env (first_time)
  7. ** Execute rails_env
  8. ** Execute db:load_config
  9. ** Execute db:migrate
  10. rake aborted!
  11. undefined method `visitor' for #<ActiveRecord::ConnectionAdapters::MysqL2Adapter:0x00000103dea3d8>
  12. .rvm/gems/ruby-1.9.2-p180/gems/arel-2.1.5/lib/arel/tree_manager.rb:19:in `visitor'
  13. .rvm/gems/ruby-1.9.2-p180/gems/arel-2.1.5/lib/arel/tree_manager.rb:23:in `to_sql'
  14. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:562:in `get_all_versions'
  15. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:708:in `migrated'
  16. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:635:in `current_version'
  17. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `block in migrate'
  18. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `each'
  19. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `detect'
  20. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:652:in `migrate'
  21. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:545:in `up'
  22. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/migration.rb:526:in `migrate'
  23. .rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.1.0.rc5/lib/active_record/railties/databases.rake:161:in `block (2 levels) in <top (required)>'
  24. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:205:in `call'
  25. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:205:in `block in execute'
  26. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:200:in `each'
  27. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:200:in `execute'
  28. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
  29. .rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
  30. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
  31. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/task.rb:144:in `invoke'
  32. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:112:in `invoke_task'
  33. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:90:in `block (2 levels) in top_level'
  34. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:90:in `each'
  35. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:90:in `block in top_level'
  36. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
  37. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:84:in `top_level'
  38. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:62:in `block in run'
  39. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
  40. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/application.rb:59:in `run'
  41. .rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/bin/rake:32:in `<top (required)>'
  42. .rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load'
  43. .rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>'
  44. Tasks: TOP => db:migrate

解决方法

看起来像Arel 2.1.5的问题;添加gem“arel”,“2.1.4”到相关的Gemfile将解决问题.

Source

猜你在找的Ruby相关文章