2012-05-30 62 views
3

我试图掌握一些“rails”任务背后的逻辑,而其他人,大多数都是rake任务。为什么rails server而不是rake server例如?Rake与“rails”下的任务背后的逻辑是什么

我可以理解,引导无法在rake中完成:毕竟,在开始使用rake之前,您首先需要一个rakefile和其他要求。所以创建一个rails二元组的项目似乎只有实际。

但为什么generate,server,console,还没有migrateassets?我没有看到逻辑。有没有?

+0

我想补充说,rake更适合于自动执行任务,就像CI系统可能使用的那样,而除了在控制台中,你不会执行大部分rails脚本。 –

+0

听起来对我来说是合乎逻辑的:开发时使用'rails'。当它可以/将在DTAP的其余部分中运行时使用'rake'。那会是吗? – berkes

+0

(移动回答。)或多或少,AFAICT。 –

回答

2

IMO的rails脚本是“活”的控制台使用,就像在开发过程中。

rake任务是更“自动化”的任务,例如,可能作为构建或部署周期的一部分运行,例如CI服务器。一些rake任务可能会将rails/etc分组。一起命令(如测试)。

1

A rake脚本是开发时用于某些常见任务的实用程序/构建工具。例如,您需要执行部署,运行测试,数据库内容,截断日志文件,编译资产....您可以创建自己的自定义耙脚本。

A rails脚本是位于脚本目录下的宝石文件,用于创建宝石rails。这就是宝石所做的。 Rails是一个Ruby Web框架,所以命令rails用于启动rails应用程序,转到rails控制台,generate文件。它在安装宝石时捆绑在一起。

您可以考虑rails命令,如bundle命令的捆绑器。 bundle installbundle update ......全部与解决宝石依赖关系有关。 rspec命令运行测试...

一些宝石有一个可执行脚本,如railsbundlercapistranowheneverrspec。其他一些宝石没有如builderwill_paginate ....

你可以看看这个对于如何执行添加到宝石,http://guides.rubygems.org/make-your-own-gem/#adding-an-executable

+0

你解释了分裂背后的原因,但不是逻辑。例如。 'rspec'在rake中有一个副本,它甚至是Rails项目中的默认rake-task。我理解我的问题中提到的“rails new”命令背后的逻辑。但是这并不能解释为什么'rails generate'是一个rails命令,而'rails db:migrate'是一个耙子。我想知道,因为我开发了rake和rails脚本(安装程序等),并且想知道要选择什么:rake或rails。 – berkes

相关问题