ruby-on-rails - rails : running an initializer after migrate

标签 ruby-on-rails rails-migrations

我有一些从初始化程序运行的代码,它运行良好。 (它将默认设置从 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/

相关文章:

ruby-on-rails - 在 >= Rails 3.2.0 中创建 "test"数据库内容的最佳方法是什么?

ruby-on-rails - 更新功能分支中的迁移时间戳

ruby-on-rails - Rails:PG::UndefinedTable:错误:关系 "..."不存在

ruby-on-rails - 我可以更改 Rails 创建迁移的方式吗

ruby-on-rails - 如何在 Rails 中检查退回的电子邮件?

mysql - 从sqlite3切换到mysql后ActiveRecord::ConnectionNotEstablished

jquery - 如何重新排序所见即所得编辑器的控件

ruby-on-rails - Rails 4 迁移:Mysql2::Error:列 'xxxx' 的数据太长

javascript - 通过 Getscript 检索的脚本无提示地失败 - 如何解决此问题?

ruby-on-rails - 使用 Devise 的可确认模块进行测试 (RSpec)