ruby - 我可以将对象或值从一个 rake 任务传递到另一个吗?

标签 ruby rake

我有一系列 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/

相关文章:

ruby-on-rails - 如何从电脑、heroku、github上彻底删除ruby on rails项目

ruby - 如何将参数从父任务传递到 Rake 中的子任务?

ruby-on-rails-3 - 使用rake转储和加载数据库

ruby-on-rails - rails : why is calling to_a on a string not valid in a rake task?

ruby - rake 的目录依赖关系

ruby - 葡萄API修改参数存在错误

Ruby Koans about_methods 第 123 行对象循环

ruby-on-rails - Rake 不知道如何构建任务 'db:migrate'

ruby - Ruby 中数组哈希的所有可能组合

ruby - 模拟 ruby​​ 类的初始化方法?