2010-12-23 100 views
3

怎樣才能決定是否把功能在generator像腳本或rake(或thor任務Ruby on Rails的:腳本/ my_script VS耙my_namespace:my_task

一些例子:

thinking-sphinxrake ts:start將啓動sphinx守護進程。但在delayed_jobscipt/delayed_job start將啓動守護進程。或多或少相同的功能(明顯),但不同的方法。

是否有任何明顯的原因用於在兩者之間進行選擇,即爲什麼選擇script/generate model而不是rake generate:model

回答

1

在過去,它一直是一個相當主觀的問題。但是今天Rails 3只在腳本目錄中有一個文件(rails),所以它不再是放腳本的首選位置。

如果您有一個需要爲Rails應用程序定義一個或多個Rake任務的gem,最好的方法是將railtie添加到gem(Railtie docs)並使用rake_tasks方法。

0

我根據是否需要加載整個rails環境/應用程序來運行腳本來決定兩者之間的關係。如果是這樣,那麼我把它做成一個耙子任務。例如,如果我的腳本需要訪問數據庫對象或我在我的應用程序中使用的代碼,那麼當然,我會把它作爲一個耙子任務。否則,只需在/script中運行,運行速度會更快。如果你注意到,像script/generate這樣的東西不需要看你的rails應用程序,所以不是rake任務。