如何递归耙? - 或合适的替代品

Ter*_*ryP 6 ruby rake build-process

我希望我的项目顶级Rakefile使用树中更深的rakefiles来构建东西; 即顶级rakefile说明如何构建项目(大图),而较低级别的rakefile构建一个特定的模块(本地图片).

当然,只要可以在任务之间共享,就可以使用共享的一组配置来完成这些操作:所以主要是关于保持对需要构建的描述,尽可能接近正在构建的源.例如/Source/Module/code.foo和cie应该使用/ Source/Module/Rakefile中的指令构建; 和/ Rakefile理解模块之间的依赖关系.

我不在乎它是否使用多个rake进程(ala recursive make),或者只是创建单独的构建环境.无论哪种方式,它都应该是可自包含的,以便由队列处理:这样可以同时构建非依赖模块.

问题是,你真的用Rake做了那样的事情!?我无法在互联网上找到任何有意义的东西,也没有在文档中找到.我尝试创建一个新的Rake :: Application对象并进行设置,但无论我尝试调用什么方法,只有异常或"不知道如何构建任务':默认'"错误被抛出.(是的,所有rakefiles都有:default).显然,人们可以在子目录中为:modulename任务执行'rake',但这会丢弃给予顶级的选项; 想想$(MAKE)和$(MAKEFLAGS).

任何人都知道如何正确地做一些像recursive耙子?

Der*_*ley 3

您可以require从其他 rake 文件中 rake 文件并从所需的文件运行任务。

将其放入 rakefile.rb 中:

require 'foo/rakefile.rb'

task :default => [:bar]
Run Code Online (Sandbox Code Playgroud)

将其放入 foo/rakefile.rb 中:

task :bar do
  puts "baz"
end
Run Code Online (Sandbox Code Playgroud)

运行根级别的 rakefile ,它将在屏幕上打印“baz”。您应该能够使用这个想法来组织您的 rake 文件和通用代码