如何从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
答案 0 :(得分:0)
根据要返回的内容,您可以尝试中止带有错误消息的任务,该错误消息可以从调用任务的位置“捕获”。然后,您可以查看错误消息是什么。
您的任务
namespace :tasks
task task1: :environment do |task|
log = "Running task... "
puts log
log << "Done!"
abort( log )
end
end
运行任务
begin
Rake::Task[ "tasks:task1" ].invoke
rescue SystemExit => exit
puts exit.message #=> "Running task... Done!"
end
它并不完美,但是根据您要返回的内容,它可以满足您的需求。
答案 1 :(得分:0)
假设您希望任务结果在其他任务中:
config = ''
task :load_config do
config = 'some config' # this could be reading from a file or API
end
# this tasks depends on the other
task use_config: [:load_config] do
puts config
end
那么:
$ bundle exec rake use_config
some config
答案 2 :(得分:-1)
您可以使用代码退出rake任务,然后使用$?
进行检查但也许rake可能不是这项工作的正确工具。