Ruby on rails 如何以及何时使用Rake文件?

Ruby on rails 如何以及何时使用Rake文件?,ruby-on-rails,makefile,rake,Ruby On Rails,Makefile,Rake,我已经做了大约一年的编程,现在我已经牢牢掌握了计算机科学的基础知识,开始探索新的课题。我最近一直在做很多web开发工作,尤其是RoR,我完全不知道Rakefile是什么。我在互联网上四处寻找一些解释,但我看到的大部分内容都是这样的:“Rake是Make的ruby版本”,或者“你可以用它从头开始构建文件”,或者“你可以编写自己的任务!”。不幸的是,我不知道Make是什么(我会假设Rake的旧版本,但因为我没有使用它,这不能帮助我理解Rake是什么),我不知道为什么我需要一个特殊的文件来为web应用

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


所以,我的问题是,Rake到底是如何在web应用程序和其他编程领域使用的?它什么时候在程序中运行,它完成了什么?非常感谢您的帮助。

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

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

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

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

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