Tez*_*zyn 2 upgrade rake-test ruby-on-rails-4
我在过去几个月一直致力于一个项目,最初是在4.1.6开发的,我现在正在尝试将其更新到4.2.0(我已经逐步测试了4.1.6和4.2.0之间的所有版本,以及所有的4.1.x版本都没有错误,只有当我转到4.2.0时才能看到我在这里描述的问题).
在这个应用程序中,有很多共享功能是所有模型共有的,所以我创建了一个抽象类,我的所有模型都继承自这个类.
class TrackableModel < ActiveRecord::Base
  self.abstract_class = true
  ...
end
class User < TrackableModel
  ...
end
Gemfile中唯一的变化是gem 'rails', '4.1.6'改为gem 'rails', '4.2.0'
更新过程遵循此处使用的说明,rake rails:update并按照同一文档第2部分中的升级步骤进行操作.
我用这个rake任务的默认值覆盖了所有冲突的文件,但之后审查了每个文件,并在我的修改中工作.
在更新之前,所有测试都通过,但更新后
130 runs, 0 assertions, 0 failures, 130 errors, 0 skips
有错误
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect table name '': SHOW FULL FIELDS FROM ``
Error:
xxxTest#test_yyy:
NoMethodError: undefined method `each' for nil:NilClass
该应用程序似乎无需更改用户体验即可运行.在我尝试执行测试之前,一切看起来都很好.
我无法让我的测试运行.
更新:
我忘了提到我在跑步
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32].
另外,我一直在努力遵循执行路径.当它试图设置灯具时似乎失败了.它正在经历一个循环,它正在构建表的schema_cache.它查询schema_migrations和我的第一个自定义表"customers"(在此调用期间,它迭代此表上的每个似乎成功的列).
在接下来的电话中
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.columns(table_name#String) 
table_name的价值是零
不幸的是,我仍然足够新的ruby/rails我很难找到table_name值(schema_migrations,customers,nil,...)实际设置的位置.
有人可以帮助指出表格列表的来源,即构建schema_cache吗?
小智 5
我遇到了同样的问题,并且能够解决它.在我的例子中,从ActiveRecord继承的基类包含belongs_to:foo语句.我把它移到基类的子类和加载的灯具.
所以,这是一个例子:
class BaseAwesomeModel < ActiveRecord::Base
    self.abstract_class = true
    # This is what was causing the issue, moved to subclasses
    # belongs_to :something 
end
class AnotherModel < BaseAwesomeModel
    belongs_to :something
end
class YetAnotherModel < BaseAwesomeModel
    belongs_to :something
end
我不确定这是否是导致你的灯具无法加载的原因,但这是我的问题的根源.
祝好运!
| 归档时间: | 
 | 
| 查看次数: | 1390 次 | 
| 最近记录: |