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

Joe*_*att 3 ruby-on-rails rails-migrations

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

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

有没有运行代码的方式迁移,但应用程序启动之前?

Pet*_*ein 12

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

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end
Run Code Online (Sandbox Code Playgroud)

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