2012-05-30 58 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

相關問題