我有一些从初始化器运行的代码,并且可以正常运行。 (它将默认设置从yaml文件保存到数据库 轨道填充措施 宝石。)

但是,当我在Travis CI上运行此操作时,由于它正在从头开始进行迁移,因此初始化器失败了,因为该表尚不存在。

是否有一种运行代码的方法 迁移但在应用程序启动之前?

有帮助吗?

解决方案

因此,尽管我不喜欢这样做,但一种简单的方法来防止初始化器在DB:迁移过程中运行,但是在应用程序开始或测试运行时运行是将其包装在表格中,如果存在表格。因此,如果您使用现有的初始化代码并将其包装在

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

其中'table_name'是缺失表的名称,那么rake db:迁移和规格运行都应该能够成功完成。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top