如何知道rake正在执行哪个任务

时间:2015-02-20 14:19:01

标签: ruby rake rake-task

我想从耙子里知道正在执行的任务的名称是什么?这该怎么做?例如,在下面的代码中,当我运行rake my_incredible_task时,它应该打印“my_incredible_task”:

  task :boot do
    task_name = <what comes here?>
    puts task_name
  end

  task :my_incredible_task => [:boot] do
    #do some stuff
  end

2 个答案:

答案 0 :(得分:0)

您可以在块中使用参数:

task :my_incredible_task do |t|
    puts t.name
end

修改

您可以改用方法:

  task :boot do |t|
    boot(t.name)
  end

  task :my_incredible_task do |t|
    boot(t.name)
    #do some stuff
  end

def boot task_name
   # do stuff
end

答案 1 :(得分:0)

我不确定是否有开箱即用的方法,但你可以这样做:

require 'rake'

module Rake
  class Application
    attr_accessor :current_task_name
  end

  class Task
    alias :old_execute :execute
    def execute(args=nil)
      Rake.application.current_task_name = @name
      old_execute(args)
    end
  end
end


namespace :so do

  task :my_task do
    puts Rake.application.current_task_name
  end
end

不确定这将如何解决并行运行的任务......