从任务中访问Rake任务描述

Kev*_*tre 11 ruby rake

在rake任务中,如何查询描述?会给出的东西:

desc "Populate DB"
task populate: :environment do
  puts task.desc # "Populate DB"
end
Run Code Online (Sandbox Code Playgroud)

knu*_*nut 17

task必须定义为任务块的参数.

desc "Populate DB"
task :populate do |task|
  puts task.comment # "Populate DB"
  puts task.full_comment # "Populate DB"
  puts task.name # "populate "
end
Run Code Online (Sandbox Code Playgroud)

编辑: 此解决方案适用于rake 0.8.7.至少rake 0.9.2.2需要一个额外的Rake::TaskManager.record_task_metadata = true(我只检查了这两个版本).

一个独立的ruby脚本,适应:

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
Run Code Online (Sandbox Code Playgroud)

原因:rake/task_manager.rb第30行(rake 0.9.2.2)是一张支票

  if Rake::TaskManager.record_task_metadata
    add_location(task)
    task.add_description(get_description(task))
  end
Run Code Online (Sandbox Code Playgroud)

默认值false在第305行中设置.

  • `task.comment`似乎为我返回了`nil`。有任何想法吗? (2认同)