Rake和Make及Ant
Rake的意思是Ruby Make,一个用ruby开发的代码构建工具。Rake的英文意思是耙子,一种很朴实的劳动工具。真的是很贴切,Rake正是一个功能强大、勤勤恳恳的劳动工具。
Rake会经常跟C/C++领域的make和Java世界的Ant进行对照,事实上,它们有很多相似的地方。我们先来看一下make和ant的历史。
make的出现是为了解决批量编译的问题。对于一个小型的项目来说,用一个脚本文件或者批处理命令来进行批量编译就已经足够好。但是对于大型的项目来说,仅仅为了少数几个文件的改变就全部重新进行一次编译无疑是耗时且不必要的。而且,在大型的项目中,往往会有很复杂的依赖关系。
Make的出现就是为了解决这两个问题,make有两个优点:
Make了解自上次Make运行以来哪些文件发生了变化,它会仅仅编译那些发生变化的文件。
Make会跟踪文件之间的依赖性,如果文件A依赖于文件B,那么如果两者都没有编译时,Make会首先编译文件B。
Ant算是一个Java世界的make,它要比make年轻许多(想想make是出现在1972年吧),它除了支持批量编译之外,还支持单元测试、JavaDoc等任务。因此,Ant在Java世界中比Make更加流行。
但是,为什么Ruby需要Rake?
Ruby代码不需要编译,为什么需要Rake?其实,与其说Rake是一个代码构建工具,不如说Rake是一个任务管理工具,通过Rake我们可以得到两个好处:
以任务的方式创建和运行脚本
当然,你可以用脚本来创建每一个你希望自动运行的任务。但是,对于大型的应用来说,你几乎总是需要为数据库迁移(比如Rails中db:migrate任务)、清空缓存、或者代码维护等等编写脚本。对于每一项任务,你可能都需要写若干脚本,这会让你的管理变得复杂。那么,把它们用任务的方式整理到一起,会让管理变得轻松很多。
追踪和管理任务之间的依赖
或是邮件反馈可也:
askdama[AT]googlegroups.com
订阅 substack 体验古早写作:
关注公众号, 持续获得相关各种嗯哼: