2010-08-16 78 views

回答

6

基本的區別是gem是需要在運行Rails應用程序的系統上安裝的東西,而插件則與您的應用程序一起部署。更具體地說,插件生活在供應商/插件,而寶石需要使用rake gem install gem_name進行安裝。

至於何時使用它們,寶石往往更容易保持最新,但更具體地說,一些寶石使用原生C代碼並專門針對給定的操作系統(如Nokogiri)進行編譯。這些需要安裝成寶石,因爲它們在移動到另一個系統時不起作用。而像acts_as_commentable這樣的東西使用直接的ruby代碼,並且可以從系統移動到系統。

0

寶石是由rubygems發佈的,rubygems是官方的ruby庫包管理器。插件是一個rails插件(可能是hacky)的方式。由於依賴關係的解決,我建議你儘可能使用寶石。 Rails3與Bundler捆綁在一起。

0

當我想爲特定的rails應用程序進行自定義更改並且不會影響我的所有系統時,每當gem按我想要的方式工作時使用gem和插件。

1

RailsGuides

甲Rails插件或者是一個擴展或核心框架的變形例。

Rubygems.org

甲寶石是封裝Ruby應用程序或庫。

因此,2之間最大的區別在於Rails插件專門用於Ruby on Rails應用程序,而寶石則不是。

例如,我們來看看Geokit

寶石(geokit-gem)提供了基本的基於位置的操作。

Rails插件(geokit-rails)將位置查找器混合到ActiveRecord中。

在這裏您可以看到gem提供了Geokit的核心。這個寶石可以在任何地方使用,而不僅僅是一個Rails應用程序。該插件爲那些在Rails應用程序中使用geokit的用戶提供了額外的功能。在這種情況下,使用插件以及寶石是可選的。

1

當您在項目中安裝插件時,它只能在相應的項目中使用。但是如果你安裝了寶石,它可以被每個項目使用。這是Gem &插件的主要區別。