0

我已经编程了大约一年,现在我已经牢牢掌握了计算机科学的基础知识,并开始探索新的主题。我最近一直在做很多 Web 开发工作,尤其是在 RoR 方面,我完全不知道 Rakefile 是什么。我在互联网上四处寻找一些解释,但我看到的大部分内容都是“Rake 是 Make 的 Ruby 版本”或“你可以用它从头开始构建文件”或“你可以写你自己的任务!”。不幸的是,我不知道 Make 是什么(我假设是 Rake 的旧版本,但由于我没有使用它,这并不能帮助我理解 Rake 是什么),我不知道为什么我需要一个特殊的文件为网络应用程序即时制作新文件,我不这样做

所以,我的问题是,在网络应用程序和其他编程领域中,Rake 到底是如何使用的?它什么时候在程序中运行,它完成了什么?任何帮助是极大的赞赏

4

2 回答 2

2

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

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

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

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

于 2013-07-05T21:35:19.737 回答
0

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

于 2013-07-05T20:34:13.850 回答