Capistrano:禁用db:migrate

时间:2013-06-14 19:46:12

标签: capistrano

在使用Capistrano执行cap deploy:cold时如何禁用db:migrate?

在config / deploy.rb中,对deploy:migrate的唯一引用已被注释掉,但它仍在尝试:

bundle exec rake RAILS_ENV=production  db:migrate

3 个答案:

答案 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

如果您愿意,可以在这里添加更多逻辑。例如,您可以在某些环境中触发实际迁移。