我有一系列 rake 任务,这些任务为多个对象播种并根据电子表格中的数据执行某些操作。不过,该系列中的第一个任务是验证电子表格并检查所有数据的格式是否正确。我有一个任务,一个接一个地运行系列中的所有任务,但我想改变它,以便在工作表验证后如果工作表无效,它会中止所有任务,我该怎么做?
我基本上想在工作表验证任务和运行所有任务的总体任务之间进行某种形式的通信。执行此操作的 ruby 方法是什么?
最佳答案
您可以通过在任何任务中调用 abort
来中止 rake 执行。
通过使用依赖项,如果前面的任何任务失败,则不会执行以下任务。
task :validate do
abort "validation failed"
end
task :second do
puts "never executed"
end
task :default => [:validate, :second]
编辑
关于参数,我建议使用一个保持状态的类,这样你就不必传递参数了:
class Spreadsheet
def initialize(args)
# ...
end
def validate
false
end
end
task :init do
@spreadsheet = Spreadsheet.new("something")
end
task :first do
unless @spreadsheet.validate
abort "validation failed"
end
end
task :second do
puts "never executed"
end
task :default => [:init, :first, :second]
关于ruby - 我可以将对象或值从一个 rake 任务传递到另一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18549473/