Capistrano Rails 使用新的迁移文件进行部署
Capistrano Rails deploy with new migration files
我想从我创建的新分支进行部署。在这个分支上, db/migrate 内容发生了变化,我删除了一些迁移文件并重新生成了一个新的。
问题是,当我从这个分支 cap staging deploy
时,它在 运行 宁迁移 PG::DuplicateTable: ERROR: relation "partners" already exists
时失败。
我想在服务器上 运行 rake db:drop
和 rake 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
。
我想从我创建的新分支进行部署。在这个分支上, db/migrate 内容发生了变化,我删除了一些迁移文件并重新生成了一个新的。
问题是,当我从这个分支 cap staging deploy
时,它在 运行 宁迁移 PG::DuplicateTable: ERROR: relation "partners" already exists
时失败。
我想在服务器上 运行 rake db:drop
和 rake 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
。