2012-01-08 39 views

cevap

15

task görev blok için bir parametre olarak tanımlanmalıdır.

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

Düzenleme: Bu çözüm tırmık 0.8.7 ile çalışır. En az rake 0.9.2.2 ek bir Rake::TaskManager.record_task_metadata = true'a ihtiyaç duyar (sadece bu iki versiyonu kontrol ettim).

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 

Gerekçe:

bir adaptasyonu ile, tek başına yakut komut standı rake/task_manager.rb hat 30 (tırmık 0.9.2.2) içerisinde

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

varsayılan false hat 305'de ayarlanmış bir çek

+1

' araştırılarak bulunabilir. Herhangi bir fikir? –

+0

Örnek benim için iyi çalışıyor. Hangi sürümü kullanıyorsunuz? Ruby 1.9.2 ve 'RAKEVERSION = '0.8.7' ' – knut

+0

Rakamımı" 0.9.2.2 "olarak güncelledim - şimdi" task.comment "ve" task.full_comment "için" nil "aldım. – knut

0

Benzer bir soruna sahip olmak, kullanıcıya özelleştirilmiş bir yardım ekranı göstermek istedim. Buradaki cevap bana çok yardımcı oldu.

O

Rake::TaskManager.record_task_metadata = true 

görevlerin ilk tanım önce yapılır çok önemlidir.

Sonra

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

Ayrıntıları yapabileceği benim için `nil` geri döndü gibi durmaktadır task.comment` https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb#L284

İlgili konular