使用Capistrano运行所有命名空间任务

时间:2009-08-19 13:36:31

标签: ruby-on-rails ruby capistrano

我有一个具有不同任务的命名空间:

namespace :mytest do
  task :setup do; ... end;
  task :task1 do; ... end;
  task :task2 do; ... end;
end

当我运行 cap mytest 时,我得到任务“备份”不存在

如何创建调用所有任务的命令?

2 个答案:

答案 0 :(得分:3)

task :default do
  setup
  task1
  task2
end

答案 1 :(得分:0)

在一个项目中,我发现自己经常需要调用给定命名空间中的所有任务。这是Namespace类的简单猴子补丁,它将添加run_all_tasks方法。该方法采用可选的except数组,该数组应该是要排除的任务名称列表(作为符号)。

module Capistrano
  class Configuration
    module Namespaces
      class Namespace

        def run_all_tasks(except = [])
          except << :all

          self.task_list(false).each do |task|
            task.body.call unless except.include?(task.name)
          end
        end

      end
    end
  end
end

该方法将按照定义的顺序运行任务。与任何类型的猴子补丁\ hack一样,请谨慎使用此方法!