Capistrano Rails 使用新的迁移文件进行部署

Capistrano Rails deploy with new migration files

我想从我创建的新分支进行部署。在这个分支上, db/migrate 内容发生了变化,我删除了一些迁移文件并重新生成了一个新的。

问题是,当我从这个分支 cap staging deploy 时,它在 运行 宁迁移 PG::DuplicateTable: ERROR: relation "partners" already exists 时失败。

我想在服务器上 运行 rake db:droprake db:setup(没有真实数据),但首先我需要在我的 app_name/current/db/migrate 文件夹中更新内容.

我怎样才能做到这一点?

您可以通过添加

覆盖 config/deploy.rb 中的上限 db:migrations
namespace :deploy do
  desc "No ActiveRecord override"
  task :migrate do
  end
end

这样当您部署时它不会 运行 迁移,然后您可以转到服务器并 运行 rake 任务以删除和重置数据库。

注意:不建议您编辑、删除任何迁移文件。如果您想编辑任何列或表,只需创建一个新的迁移。

我最终禁用了我的 Capfile 中的 require 'capistrano/rails/migrations' 和服务器中的 运行 rake db:drop rake db:setup