2012-01-08 8 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が必要です(この2つのバージョンのみをチェックしました)。

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 

理由::

Aは適応単独ルビースクリプトをスタンド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

'を調べることによって見つけることができます。何か案は? –

+0

この例は私にとってうまくいきます。どのバージョンを使用していますか? ruby 1.9.2と 'RAKEVERSION = '0.8.7'' – knut

+0

rakeを' 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 

詳細を行うことができます私のために `nil`を返すように見えるtask.comment` https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb#L284