我有一些代码,我从初始化程序运行,它工作正常。 (它将yaml文件的默认设置保存到rails-settings-cache gem的数据库中。)
但是当我在Travis CI上运行时,由于它是从头开始进行迁移,因此初始化程序失败,因为该表尚不存在。
在迁移之后但在应用程序启动之前,有没有办法运行代码?
答案 0 :(得分:12)
因此,虽然我不喜欢这样做,但是在db:migrate期间阻止初始化程序运行的简单方法,但是在应用程序启动或测试运行时运行是将它包装在子句测试中(如果表存在)。因此,如果您使用现有的初始化代码并将其包装在
中if ActiveRecord::Base.connection.table_exists? 'table_name'
....
end
其中'table_name'是缺失表的名称,然后rake db:migrate和spec run应该能够成功完成。