2012-01-08 17 views

उत्तर

15

task कार्य-ब्लॉक के लिए एक पैरामीटर के रूप में परिभाषित किया जाना चाहिए।

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

संपादित करें: यह समाधान रेक 0.8.7 के साथ काम करता है। कम से कम रेक 0.9.2.2 को अतिरिक्त Rake::TaskManager.record_task_metadata = true की आवश्यकता है (मैंने केवल इन दो संस्करणों की जांच की है)।

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 

कारण::

एक रूपांतरण के साथ अकेले माणिक स्क्रिप्ट खड़े rake/task_manager.rb लाइन 30 (रेक 0.9.2.2) में एक चेक

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

डिफ़ॉल्ट false लाइन 305 में सेट किया गया है

+1

'' task.comment' nil' मेरे लिए लौट रहा प्रतीत होता है की जांच कर रही द्वारा पाया जा सकता है। कोई विचार? –

+0

उदाहरण मेरे लिए ठीक काम करता है। आप किस संस्करण का उपयोग करते हैं? मेरे पास रूबी 1.9.2 और 'RAKEVERSION =' 0.8.7'' – knut

+0

मैंने अपने रेक को '0.9.2.2' में अपडेट किया है - अब मुझे' task.comment' और 'task.full_comment' के लिए' nil' मिलता है। – knut

0

इसी तरह की समस्या होने के कारण, मैं उपयोगकर्ता को एक अनुकूलित सहायता स्क्रीन दिखाना चाहता था। यहां जवाब ने मुझे बहुत मदद की।

यह बहुत महत्वपूर्ण है कि

Rake::TaskManager.record_task_metadata = true 

कार्यों की पहली परिभाषा से पहले किया जाता है।

तो फिर तुम

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

विवरण क्या कर सकते हैं https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb#L284

संबंधित मुद्दे