如何从ruby中的Rake
任务返回值?
样本代码:
namespace tasks
task task1: :environment do |task|
log = "Running task"
puts log
log << "Done"
return log # suggest how to do this
end
end
我正在运行rake任务:Rake::Task['tasks:task1'].invoke
.如何在变量中获得返回值,如下所示:
result = Rake::Task['tasks:task1'].invoke
5条答案
按热度按时间qnakjoqk1#
假设你想在其他任务中得到任务结果:
然后又道:
zpgglvta2#
尝试使用错误消息中止并捕获该消息。
根据您试图返回的内容,您可以尝试使用错误消息中止任务,这将是从您调用任务的位置“可捕获”的。然后,您可以看到错误消息是什么。
您的任务
运行您的任务
它并不优雅,但取决于你想返回什么,它可以满足你的需求。
ssm49v7z3#
直接调用Rake的
action
。我通过在控制台中挖掘Rake任务的各种方法发现了这一点,这似乎不需要运行两次任务就可以工作,就像@vido的答案一样。
然而,我发现的唯一警告是,我不知道如何使用此方法将参数传递给Rake任务。使用
.call( "myargument" )
不起作用。如果你能弄清楚如何做到这一点,我会很感激,如果你分享它。谢谢!更新:想明白了
经过更多的实验,我弄清楚了如何在向Rake任务传递参数时使用此方法。你只需要传递一个
Hash
的参数作为第二个参数,nil
作为第一个参数,像这样:它还有一个额外的好处,那就是命名你传递给Rake任务的参数,这是一个很好的奖励。
版本
o2gm4chl4#
你可以用代码退出rake任务,然后用$?
但也许rake并不是这项工作的合适工具。
uhry853o5#
现在致电: