0
如果我有我的Rake文件定义的任务,看起来像这样:有没有办法将后期绑定放入/日志记录附加到耙子任务?
MyLibrary::CopySrcTask.new(:copySrc) do |task|
puts "Copying source"
task.src_dir = 'src/'
task.destination = 'build/lib/'
end
我已经认识到,在上述任务的puts
将得到执行,即使我指定其中一个耙子目标该:copySrc
任务是不是执行。我想知道是否有办法以后期绑定的方式指定puts
,这样只有当/当rake任务本身执行时才会执行它。
这似乎不是什么大不了的,但肯定会允许更容易调试,而且,当你考虑这样的情况下,它变成一个更大的交易:在这种情况下
MyLibrary::CopySrcTask.new(:copySrc) do |task|
task.src_dir = complex_function_which_affects_filesystem()
task.destination = 'build/lib/'
end
现在,它与puts
实质上是相同的问题,即使该任务没有运行,但现在,而不是只是一个多余的puts
调用,它正在做一些整个操作,弄乱了文件系统。有什么办法可以使任务初始化中的所有代码只在任务本身执行时才执行?
如果像这样的工作,这将是巨大的:
MyLibrary::CopySrcTask.new(:copySrc) do |task|
lambda do # this code will only be run if the task gets run
puts "Copying source"
task.src_dir = complex_function_which_affects_filesystem()
task.destination = 'build/lib/'
end
end
我要指出,我使用的任务是从图书馆,所以我不能只是编辑的任务本身。