Rails从宝石跳过迁移

时间:2019-02-27 21:25:45

标签: ruby-on-rails migration

我们正在构建管道中执行新的数据库创建和迁移,而Rails跳过了所有来自gem的迁移。我们可以通过在之后检查迁移状态来查看。

  • docker-compose up -d
  • 睡觉5
  • docker-compose run -e“ RAILS_ENV = test”网络耙db:create db:migrate
  • docker-compose run -e“ RAILS_ENV = test” Web rake db:migrate:status
  • docker-compose run -e“ RAILS_ENV = test” web rspec --format RspecJunitFormatter --out rspec.xml
  • docker-compose down

enter image description here

2 个答案:

答案 0 :(得分:0)

运行

docker-compose run -e "RAILS_ENV=test" web rake db:create db:schema:load

代替

docker-compose run -e "RAILS_ENV=test" web rake db:create db:migrate

答案 1 :(得分:0)

检查您的db/migrate目录是否包含这些迁移:通常需要手动将迁移从一个引擎复制到主机应用程序中。 documentation推荐

  

bin / rails railties:install:migrations

为避免此步骤,但只有在您对引擎代码有影响的情况下才有可能,我喜欢按照以下方式进行操作:

# Skips copying of migration and lets them run automagically from the host app
initializer :append_migrations do |app|
  next if app.root.to_s.start_with?(root.to_s) # only run when called from other apps
  app.config.paths['db/migrate'].concat(config.paths['db/migrate'].expanded)
end