在rake任务中,如何查询描述?可以给出的东西:
desc "Populate DB"
task populate: :environment do
puts task.desc # "Populate DB"
end
答案 0 :(得分: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
修改强>
这个解决方案适用于rake 0.8.7。至少rake 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行(rake 0.9.2.2)是一张支票
if Rake::TaskManager.record_task_metadata
add_location(task)
task.add_description(get_description(task))
end
默认false
在第305行设置。
答案 1 :(得分:2)
遇到类似问题,我想向用户显示自定义帮助屏幕。这里的答案对我帮助很大。
非常重要的是
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
可以找到详细信息