我有一些从初始化程序运行的代码,它运行良好。 (它将默认设置从 yaml 文件保存到 rails-settings-cache gem 的数据库中。)
但是当我在 Travis CI 上运行它时,由于它是从头开始迁移,初始化失败,因为该表尚不存在。
有没有办法在迁移之后但在应用程序启动之前运行代码?
最佳答案
因此,虽然我不喜欢这样做,但防止初始化程序在 db:migrate 期间运行的一种简单方法是在应用程序启动或测试运行时将其包装在测试表是否存在的子句中。因此,如果您使用现有的初始化程序代码并将其包装在
if ActiveRecord::Base.connection.table_exists? 'table_name'
....
end
其中 'table_name' 是缺失表的名称,那么 rake db:migrate 和规范运行都应该能够成功完成。
关于ruby-on-rails - rails : running an initializer after migrate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841292/