一个典型的rake任务定义如下:
desc "Set the environment value for the database"
task "environment:set" => [:environment, :load_config] do
ActiveRecord::InternalMetadata.create_table
ActiveRecord::InternalMetadata[:environment] = ActiveRecord::Migrator.current_environment
end
但是如果它没有desc
,而我想稍后在运行时中添加它,在执行了包含任务定义的文件之后。比如desc "this is the documentation", task: :taskname
。这可能吗?
2条答案
按热度按时间o0lyfsai1#
尽管这是一个相当老的问题,我张贴我的答案,任何人登陆这里从谷歌搜索。
一个任务可以被多次提及,每次在它之前的
desc
都会添加(而不是替换)给定的描述。我们也可以使用任务对象上的方法来达到相同的效果:“在任务执行之后”的概念有点不清楚,它是指执行任务定义还是任务体。后者取决于Rake的依赖性和新近度解析,因此任务主体可能永远不会被执行。
无论如何,从技术上讲,我们可以随时调用
#add_description
和#comment=
,* 甚至在任务体中 *。虽然我想不出实际的效果,因为描述只显示了rake -T
和rake -D
不执行任何任务。wbrvyc0a2#
是的,你可以在事实之后添加一个desc,只要它直接在“task”方法之上。
到Github repo的链接已经断开,但是如果你查看at the source here,你可以看到desc只是在调用
rake -T
时附加一个字符串。