2010-08-04 125 views
2

我有我想要在我自己的Rails應用程序之間移植的功能。爲Rails 3創建插件或寶石?

我想知道是否應該爲每個要移動(可共享)的功能創建一個gem或插件。

他們只是爲Rails(現在),因爲他們包括CSS,HTML,JS和圖像文件。

但我一直在想,提供插件的東西也可以提供寶石,但不是相反?所以也許最好學習如何創建寶石,因爲那麼你我不必學習如何創建寶石和插件?現在,寶石似乎更受歡迎。

但是,從我所能理解的一個gem在操作系統中的所有rails應用程序之間共享。那意味着我無法爲每個Rails應用程序定製它?在這種情況下,可能創建一個插件更好,因爲它應該被允許自定義(編輯css,js等)每個功能並將其存儲在Rails應用程序本身內而不是操作系統級別。

一些建議,將不勝感激!

UPDATE:

所以寶石與CSS,HTML,JS和圖像文件的偉大工程?在插件中,我認爲你可以擁有一個MVC,你自己的模型,視圖和控制器。引自Rails指南「在您的插件中存儲模型,視圖,控制器,幫助器,甚至其他插件」。這可能也是寶石?例如。我想添加一個擴展程序,該擴展程序爲我提供了一個很好的購物車(具有自己的遷移,mvc,資產文件),這些購物車將被掛鉤到當前的Rails應用程序中。這可能是寶石還是僅作爲插件?

回答

2

你說得對,寶石比插件提供多一點。對我來說,版本控制和其他寶石的依賴關係是主要的。

一個寶石不需要在使用ruby的所有內容中共享。您可以安裝單個寶石的多個版本,並在您的environment.rb中指定寶石需要特定版本。例如。

config.gem 'my-gem', :version => '1.2.3' 

此外,您可以將寶石凍結到您的rails應用程序中,以便您知道您正在使用特定版本。

你可能想看看jeweler gem這使得創建自己的寶石更容易。

UPDATE

要包括CSS,JavaScript的等我想你會需要做一個Rails的引擎,然後可以捆綁爲一個插件或寶石。我沒有這樣做,但有一些涵蓋herehere

+0

鏈接到珠寶商寶石似乎被破壞: http://github.com/technicalpickles/jeweler – 2010-08-04 21:00:32

+0

請參閱我更新的職位。 – 2010-08-04 21:07:07

+1

我已修復珠寶鏈接。乾杯。 – Shadwell 2010-08-04 21:08:35

2

Rails 3的推動似乎是針對寶石,而不是插件,因爲已經增加了很多支持,使寶石的工作效果比以往的插件還要好。構建良好的gem是不同應用程序之間共享的好東西,同時也減少了您必須執行的測試數量,因爲您可以在集成之前徹底測試gem。

對於使用CSS,HTML和其他資源的Rails的擴展,可能需要構建一個引擎來將其全部捆綁起來,並允許它整齊地放入應用程序中。

+0

「你需要建立一個引擎來捆綁這一切」。你是什​​麼意思的引擎?您的意思是您可以使用工程師創建的Rails引擎(又名Rails應用程序內的Rails應用程序)? – 2010-08-05 03:46:43

+0

那種事,是的。有很多方法來構建它們,就像寶石一樣。這是一個有一些文檔和例子的網站:http://rails-engines.org/ – tadman 2010-08-05 13:57:25