考虑以下
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任务。
答案 0 :(得分:0)
有多种方法可以做到这一点。
您可以在Rake::Task["something"]
期间从do_some_testing
获取引用,并在那里重新定义方法。
但还有另一种更简单的方法 - 对我有用。将bar
中的值设置为环境变量。并在需要时修改环境变量。