2010-05-18 170 views
5

由於here推出的概念,如何解決Rails插件上的rake任務棄用問題?

的Rails插件::無非是 的Rails :: Engine的詳細,但因爲它是在啓動過程中加載 爲時已晚,但它 沒有相同配置將 作爲裸露的Rails :: Engine使用。

對Rails :: Railtie和 Rails ::引擎,你不應該 繼承自Rails :: Plugin。 Rails :: Plugin自動配置爲引擎 ,只需 置入供應商/插件。由於 這是自動完成的,因此您的 實際上無法在您的插件中聲明 Rails :: Engine,否則會導致相同的 文件加載兩次。這意味着 ,如果您想將發動機裝運爲 寶石,則不能將其用作插件,反之亦然 。

除此之外概念上的差異, 導軌::引擎和Rails ::插件是 之間的唯一區別在於插件在引導過程期間在插件根 自動加載 文件「init.rb」。

不贊成使用rails插件中的rake任務,建議使用lib/tasks代替。如何解決這個問題?我可以簡單地將插件的任務移動到lib/tasks?

回答

9

我剛剛有同樣的問題在這裏,只是感動了所有的供應商/插件/ * /任務/ *。耙文件LIB /任務(必須創建此目錄,因爲它不存在)

然後耙導軌:更新運行良好

+0

這似乎確實起作用。不過,我仍然對這種行爲的替代品應該是什麼感到好奇。即,插件現在如何定義新的任務? – Trejkaz 2010-07-07 04:43:33

+0

他們都在RAILS_ROOT/tasks /,這就是爲什麼只是移動他們解決這個問題,它是一樣的事情,但在不同的地方 – vrsmn 2010-07-14 19:09:15

+0

有助於抓撓癢。謝謝~~ – lkahtz 2011-02-26 03:05:08

2

如果你是一個插件的開發,您只需將移動

my_cool_plugin/tasks 

my_cool_plugin/lib/tasks 
相關問題