【发布时间】:2013-06-14 19:46:12
【问题描述】:
在使用 Capistrano 执行 cap deploy:cold 时如何禁用 db:migrate?
在 config/deploy.rb 中,对 deploy:migrate 的唯一引用已被注释掉,但它仍在尝试这样做:
bundle exec rake RAILS_ENV=production db:migrate
【问题讨论】:
标签: capistrano
在使用 Capistrano 执行 cap deploy:cold 时如何禁用 db:migrate?
在 config/deploy.rb 中,对 deploy:migrate 的唯一引用已被注释掉,但它仍在尝试这样做:
bundle exec rake RAILS_ENV=production db:migrate
【问题讨论】:
标签: capistrano
我通过覆盖我的config/deploy.rb 中的deploy:migrate 方法获得了成功。
namespace :deploy do
desc "No ActiveRecord override"
task :migrate do
end
end
【讨论】:
在 Capistrano v2 中重新定义任务时,替换了原始任务。然而,构建 Capistrano v3 的 Rake DSL 是附加的。根据documentation。 在大多数情况下,您只需要使用 clear_actions,它会删除指定任务的行为,但不会改变它的依赖关系或 cmets:
namespace :deploy do
Rake::Task["migrate"].clear_actions
task :migrate do
puts "no migration"
end
end
【讨论】:
我遇到了同样的问题。这就是我在 Rakefile 中覆盖它的原因。像这样:
namespace :db do
desc "db:migration fakes"
task :migrate => :environment do
p 'No. We will not migrate!'
end
end
如果您愿意,您可以在此处添加更多逻辑。例如,您可以在某些环境中触发真正的迁移。
【讨论】: