因此,尽管我不喜欢这样做,但一种简单的方法来防止初始化器在DB:迁移过程中运行,但是在应用程序开始或测试运行时运行是将其包装在表格中,如果存在表格。因此,如果您使用现有的初始化代码并将其包装在
if ActiveRecord::Base.connection.table_exists? 'table_name'
....
end
其中'table_name'是缺失表的名称,那么rake db:迁移和规格运行都应该能够成功完成。
题
我有一些从初始化器运行的代码,并且可以正常运行。 (它将默认设置从yaml文件保存到数据库 轨道填充措施 宝石。)
但是,当我在Travis CI上运行此操作时,由于它正在从头开始进行迁移,因此初始化器失败了,因为该表尚不存在。
是否有一种运行代码的方法 后 迁移但在应用程序启动之前?
解决方案
因此,尽管我不喜欢这样做,但一种简单的方法来防止初始化器在DB:迁移过程中运行,但是在应用程序开始或测试运行时运行是将其包装在表格中,如果存在表格。因此,如果您使用现有的初始化代码并将其包装在
if ActiveRecord::Base.connection.table_exists? 'table_name'
....
end
其中'table_name'是缺失表的名称,那么rake db:迁移和规格运行都应该能够成功完成。