代码之家  ›  专栏  ›  技术社区  ›  Joe Holloway

如何为Capistrano任务添加一些步骤?

  •  12
  • Joe Holloway  · 技术社区  · 17 年前

    我想在运行deploy:migrate任务之前停止一些进程。我知道可以通过复制现有代码并在任务开始和结束时添加停止/启动步骤来重新定义部署:迁移任务。

    我想知道是否有一种方法可以避免从默认部署中复制代码:在我的任务版本中迁移任务。是否有方法引用现有部署:在定义同名的新任务时迁移任务?

    2 回复  |  直到 12 年前
        1
  •  21
  •   Emily    17 年前

    而不是重新定义 deploy:migrate ,您应该为它定义一个前后挂钩。首先,创建一个新任务来完成您需要做的事情:

    task :custom_name do
      # whatever you need to do
    end
    

    然后将此新任务设置为在 部署:迁移 通过执行以下操作之一执行的任务:

    before "deploy:migrate", :custom_name
    after "deploy:migrate", :custom_name
    
        2
  •  0
  •   Ry Biesemeyer    12 年前

    对于我的需求,我覆盖deploy.rb中的现有任务。

    namespace :deploy do
      # to Override deploy:migrate task
      task :precompile, :roles => :app, :except => { :no_release => true } do
        run "your modified commands"
      end
      # to override deploy:assets:precompile task
      namespace :assets do
        task :precompile, :roles => :app, :except => { :no_release => true } do
          run "your modified commands"
        end
      end
    end
    
    推荐文章