如何从rake任务返回一些值

时间:2017-04-02 11:26:26

标签: ruby-on-rails ruby rake-task

如何从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

3 个答案:

答案 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可能不是这项工作的正确工具。