Rails:迁移后运行初始化程序

时间:2013-11-07 16:28:46

标签: ruby-on-rails rails-migrations

我有一些代码,我从初始化程序运行,它工作正常。 (它将yaml文件的默认设置保存到rails-settings-cache gem的数据库中。)

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

在迁移之后但在应用程序启动之前,有没有办法运行代码

1 个答案:

答案 0 :(得分:12)

因此,虽然我不喜欢这样做,但是在db:migrate期间阻止初始化程序运行的简单方法,但是在应用程序启动或测试运行时运行是将它包装在子句测试中(如果表存在)。因此,如果您使用现有的初始化代码并将其包装在

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

其中'table_name'是缺失表的名称,然后rake db:migrate和spec run应该能够成功完成。