2010-11-23 148 views
11

我是Rails的新手,我對gems &插件的概念感到困惑。任何人都可以爲我解釋嗎?寶石和插件有什麼區別?

+0

[在Ruby on Rails中,將某些東西安裝爲gem還是作爲插件有什麼區別?](http://stackoverflow.com/questions/3629919/in-ruby-on-rails-whats-該差 - 安裝 - 東西 - 作爲一種寶石或間) – 2010-11-23 13:46:40

回答

1

插件的使用越來越少,所以堅持使用寶石。寶石和插件可以做同樣的事情,所以這就是爲什麼他們混淆。然而,區別在於它們是如何組織的,最重要的是如何管理寶石,例如bundlerconfig.gem。管理寶石及其版本要容易得多。插件必須安裝在vendor文件夾中,其中gems也可以安裝在該文件夾中,如果它們需要自定義或只要導軌能夠理解該目錄所在的位置就可以將其安裝在gem目錄中。當rails開始時,大多數人使用插件來增加功能,但開發人員很快意識到,gem提供了更好的方式來打包和更新庫,所以大多數插件已經遷移到寶石和更少的插件正在構建。

8

插件只是從特定目錄加載的庫,寶石通過BundlerRubyGems直接加載。

這確實是一個區別的維護和管理。當你需要最新最好的authlogic插件時會發生什麼,以及你需要更新目錄中的文件。當它是一個插件時聽起來並不是那麼糟糕,但是對於不斷更新的內容呢?現在有一個代碼打包和分發系統(RubyGems),它有助於管理這些事情。

再次考慮authlogic示例,如果新版本現在需要其他一些依賴關係,會發生什麼情況?通過RubyGems,gem文件明確定義了這種關係,插件系統不會這樣,而且這樣的定義將會是多餘的。

隨着rails 3.x中Bundler的出現,管理和分發項目使用的寶石變得非常容易。

TL; DR:插件基本上是沒有包裝信息的寶石。

-1

寶石和插件

寶石被存儲在LIB文件

寶石是使用由RubyGems的定義的包裝系統的封裝Ruby應用。

插件被存儲在銷售商/插件

甲Rails插件是擴展核心Rails框架封裝的Ruby應用程序。