【问题标题】:Capistrano: disable db:migrateCapistrano:禁用数据库:迁移
【发布时间】: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


【解决方案1】:

我通过覆盖我的config/deploy.rb 中的deploy:migrate 方法获得了成功。

namespace :deploy do
  desc "No ActiveRecord override"
  task :migrate do
  end
end

【讨论】:

    【解决方案2】:

    在 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
    

    【讨论】:

    • 关于覆盖任务的新方法的信息是正确的。但是 clear_actions 行应该是 Rake::Task["deploy:migrate"]。否则,Capistrano 会抛出错误,找不到“迁移”任务。此外,不需要封闭的命名空间块。您只需在 deploy.rb 文件中添加行 Rake::Task["deploy:migrate"].clear_actions 即可禁用迁移。
    【解决方案3】:

    我遇到了同样的问题。这就是我在 Rakefile 中覆盖它的原因。像这样:

    namespace :db do
    
      desc "db:migration fakes"
      task :migrate => :environment do
        p 'No. We will not migrate!'
      end
    
    end
    

    如果您愿意,您可以在此处添加更多逻辑。例如,您可以在某些环境中触发真正的迁移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      相关资源
      最近更新 更多