从一系列 Rake 任务中退出并继续下一个

Exit from one of a series of Rake tasks and continue with the next

我有这个主要的 Rake 任务

  namespace :crawler do

  task main: :environment do
  Rake::Task['tester:first'].execute
  Rake::Task['tester:second'].execute
  Rake::Task['tester:third'].execute
  end

  end

每个任务都运行一段代码来检查是否存在一个值,如果不存在则退出任务并继续下一个任务。 实际上代码如下,但它不起作用

def check(value)
 if !value.nil?
   return value
 else
   exit
 end
end

当我到达Exit部分时,整个程序退出,其他任务没有执行。

如果您的检查方法 return 为零,请尝试在您的 Rake 任务中使用 "next" 跳转到下一个任务。

您可以在 "check" 函数中使用条件条件 return 值(如果存在)或 return nil(如果值为 nil)。然后,如果检查returns nil,则可以使用next(不是exit)跳转到下一个任务。

task :main do
  Rake::Task['first'].execute(value: 'Hello, Rake world!')
  Rake::Task['second'].execute
end

task :first do |_t, args|
  value = args[:value]
  next if check(value).nil?
  puts 'the value is: ' + value
end

task :second do
  puts 'the second task'
end

def check(value)
  if value.nil?
    return nil
  else
    return value
  end
end

在函数定义中使用 "next" 将不起作用。您只能从当前 rake 任务中跳到下一个 rake 任务