2015-02-20 2 views
2

Хотелось бы узнать, изнутри рейка спросите, что имя задачи, которая выполняется? Как это сделать? Например, в коде сильфона, когда я бегу 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 

ответ

0

Вы можете использовать параметр в блоке:

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

EDIT

Вместо этого вы можете использовать методы:

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 
+0

I немного изменил вопрос, чтобы отразить реальную проблему. –

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 

Не уверен, как это будет работать с задачами, которые выполняются параллельно ...

Смежные вопросы