在使用Capistrano执行cap deploy:cold
时如何禁用db:migrate?
在config / deploy.rb中,对deploy:migrate
的唯一引用已被注释掉,但它仍在尝试:
bundle exec rake RAILS_ENV=production db:migrate
答案 0 :(得分:4)
我通过覆盖deploy:migrate
中的config/deploy.rb
方法获得了成功。
namespace :deploy do
desc "No ActiveRecord override"
task :migrate do
end
end
答案 1 :(得分:1)
在Capistrano v2中重新定义任务时,原始任务被替换。然而,构建Capistrano v3的Rake DSL是附加的。根据{{3}}。 在大多数情况下,您只需要使用clear_actions,它会删除指定任务的行为,但不会改变它的依赖关系或注释:
namespace :deploy do
Rake::Task["migrate"].clear_actions
task :migrate do
puts "no migration"
end
end
答案 2 :(得分:0)
我遇到了同样的问题。这就是我在Rakefile中覆盖它的原因。像这样:
namespace :db do
desc "db:migration fakes"
task :migrate => :environment do
p 'No. We will not migrate!'
end
end
如果您愿意,可以在这里添加更多逻辑。例如,您可以在某些环境中触发实际迁移。