在测试/运行时修改Rake任务

时间:2017-09-03 06:28:41

标签: ruby rspec rake

考虑以下

class Foo
  def bar
    1
  end
end

然后是两个佣金任务......

task :something
  InvokeSomething(Foo.new)
end

task :test
  do_some_testing
end

def do_some_testing
   setup_test
   `rake something`
   check_if_it_did_everything_correctly
end

执行setup_test后,我想修改方法class Foo的{​​{1}}到return 2的来源。

思路:

  • 创建一个在我定义rake任务bar之前调用的rake任务,并直接修改源代码。因此something定义了不同的源代码。

  • 以某种方式修改Rake任务,以便覆盖该特定方法。至少我需要在运行时期间引用rake任务。

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。

您可以在Rake::Task["something"]期间从do_some_testing获取引用,并在那里重新定义方法。

但还有另一种更简单的方法 - 对我有用。将bar中的值设置为环境变量。并在需要时修改环境变量。