2012-01-08 13 views

Odpowiedz

15

task musi być zdefiniowana jako parametr dla zadania bloku.

desc "Populate DB" 
task :populate do |task| 
    puts task.comment # "Populate DB" 
    puts task.full_comment # "Populate DB" 
    puts task.name # "populate " 
end 

Edit: To rozwiązanie działa z prowizji 0.8.7. Przynajmniej rake 0.9.2.2 potrzebuje dodatkowego Rake::TaskManager.record_task_metadata = true (sprawdziłem tylko te dwie wersje).

samodzielnym ruby ​​skrypt z adaptacji:

gem 'rake' #'= 0.9.2.2' 
require 'rake' 

#Needed for rake/gem '= 0.9.2.2' 
Rake::TaskManager.record_task_metadata = true 

desc "Populate DB" 
task :populate do |task| 
    p task.comment # "Populate DB" 
    p task.full_comment # "Populate DB" 
    p task.name # "populate " 
end 

if $0 == __FILE__ 
    Rake.application['populate'].invoke() #all tasks 
end 

Powód: rake/task_manager.rb w wierszu 30 (natarcia 0.9.2.2) jest sprawdzenie

if Rake::TaskManager.record_task_metadata 
    add_location(task) 
    task.add_description(get_description(task)) 
    end 

Domyślna false jest ustawiony w linii 305

+1

'task.comment' wydaje się być powrocie' zerowe dla mnie. Jakieś pomysły? –

+0

Przykład działa dobrze dla mnie. Którą wersję używasz? Mam ruby ​​1.9.2 i 'RAKEVERSION = '0.8.7'' – knut

+0

Zaktualizowałem swój rake do' 0.9.2.2' - teraz otrzymuję 'nil' dla' task.comment' oraz 'task.full_comment'. – knut

0

Mam podobny problem, że chciałem pokazać użytkownikowi spersonalizowany ekran pomocy. Odpowiedź tutaj bardzo mi pomogła.

Jest to bardzo ważne, że

Rake::TaskManager.record_task_metadata = true 

odbywa się przed pierwszą definicję zadań.

Następnie można zrobić

Rake.application.tasks.each do |t| 
    printf("%-}s # %s\n", 
      t.name_with_args, 
      t.comment) 
    end 

szczegóły można znaleźć badając https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb#L284

Powiązane problemy