我如何以及何时使用Rake文件?

时间:2013-07-05 20:30:59

标签: ruby-on-rails makefile rake

我已经编程了大约一年,并且已经开始探索新的主题,因为我已经掌握了计算机科学的基础知识。我最近一直在做很多网页开发工作,特别是对于RoR,我对Rakefile是什么感到困惑。我在网上浏览过一些解释,但我看到的大部分内容都是“Rake是Make的红宝石版本”或“你可以用它从头开始构建文件”或“你可以写自己的任务!“不幸的是,我不知道Make是什么(我会假设Rake的旧版本,但由于我没有使用它,这不能帮助我理解Rake是什么),我不知道为什么我需要一个特殊的文件为web应用程序动态创建新文件,我真的不明白什么是任务/如何使用它们。

所以,我的问题是,在网络应用程序和其他编程领域中,Rake究竟是如何使用的?什么时候在程序中运行它会完成什么?非常感谢任何帮助

2 个答案:

答案 0 :(得分:2)

Rake,Make,Lake,Waf,Ninja,CMake及其所有类似的项目构建工具旨在执行命令并执行基于依赖关系的任务,通常表示为图表。当您为任何这些系统编写脚本文件时,它通常使用特定于域的语言编写。为了记录,Make 不是旧版本的Rake。它们是两个完全独立的工具,基于相同的概念。

这些系统在您执行任务时非常有用,这取决于其他文件的存在或年龄,或者您需要先执行先决任务。一个典型的例子是构建一个涉及两个或更多阶段的C / C ++应用程序。首先将项目源编译为目标文件,然后将这些目标文件链接在一起以生成最终的可执行文件。这意味着在目标文件存在之前无法执行可执行文件。之后,除非存在相应的源文件,否则无法创建目标文件。

在网络应用中,如果您的项目需要生成某些文件并确保它们是最新的,这将非常有用。例如,将.svg矢量文件转换为png或jpeg。每当.svg文件发生更改时,都需要重新生成相应的输出以反映该更改。另一个例子,从自定义模板生成相应的html和css文件。

这与shell脚本不同,表达这种关系并不容易。它们都可以执行项目所需的命令,但是像Rake和Make这样的系统通过仅运行所需的内容来更有效地执行此操作。在shell脚本中表达相同的行为将需要更多的代码行,并且它不会像上述系统使用的声明性那样干净。

答案 1 :(得分:0)

Rake是一个用于组织脚本的框架,您可能需要执行各种维护任务。 Rails附带了一些内置任务,可以让您了解该工具的范围。尝试运行命令rake -T以查看可用的rake任务列表。