2011-04-02 67 views

回答

37

寶石

  • 寶石是使用由RubyGems定義的包裝系統的封裝紅寶石應用。
  • Rails本身就是一塊寶石。

    Rails的寶石被安裝在JRuby的1.0 \ LIB \紅寶石\寶石\ 1.8 \寶石\軌-1.2.3爲:

    DIR
    DIR內置
    68465 CHANGELOG
    DIR CONFIGS
    DIR調度
    DIR DOC
    DIR環境
    307 fresh_rakefile
    DIR助手
    DIR HTML
    DIR LIB
    1072 MIT許可
    11969 Rake文件
    8,001自述
    lib目錄包含了所有的寶石源代碼。

  • 我們可以安裝,升級和查詢寶石version.If一個使用工具,像我GemInstaller,人們可以很容易用一個簡單的配置文件自動RubyGems的安裝和加載。

  • 爲Ruby解釋器安裝的Gem可以由該解釋器在系統範圍內使用。
  • Gem可以作爲插件發佈。
  • 也可以在供應商/寶石中出售。

插件

  • 插件是Rails框架的延伸。
  • 無法使用命令進行升級。要升級,必須卸載並安裝升級版本。
  • 必須掛鉤入軌應用程序。 (必須有init.rb)
  • 有一個install.rb文件。
  • 插件無法發佈爲Gem。
  • 只能在應用程序範圍內使用。

Goldspike插件安裝在供應商\插件\的應用程序的軌道集成目錄:
7089的build.xml
1141 LICENSE.TXT
DIR插件
6,675的pom.xml
1,447自述文件
DIR樣本
插件/ goldspike目錄由組成210 24 init.rb
25 install.rb
DIR LIB
549 Rake文件
536自述
DIR任務
DIR測試
lib目錄包含所有的插件的源代碼。

寶石VS插件

  • Rails的有來自供應商/插件/目錄加載插件的方式。這很可能會被棄用,因爲Rails增加了對供應商/ gems /目錄中的項目 捆綁寶石的支持。 rspec的寶石版本是用於日常使用的寶石版本。除非您支持1.2.x系列或更早版本的Rails應用程序,否則應該使用這些應用程序。
  • 由於您不包含實際應用程序中的庫,因此使用Gems檢入和檢出存儲庫通常會變得更快。 在分佈式團隊中,使用與涉及軟件版本不兼容有關的插件通常存在較少的問題。
  • 一般的經驗法則是將Rails特有的功能作爲一個插件,同時將更多的通用Ruby庫製作成gem。
+0

謝謝@Piyush。你能告訴我,使用插件和寶石。然後,爲什麼/我們在哪裏使用插件和寶石。請用實時概念解釋。 – 2011-04-02 04:55:52

+0

hi @ user409617,現在每天都在使用所有插件。所以兩者幾乎相同。但我個人更喜歡插件,因爲我可以查看插件內的代碼,並確切知道發生了什麼。 (不是那種寶石不能,但它有點麻煩):D – sameera207 2011-04-02 05:14:48

+1

@ sameera207我不同意,我相信絕大多數Rails應用程序現在使用的是寶石而不是插件。儘管如此,有些人確實會出售它們的寶石,或者通過Bundler將它們安裝在相對於該項目的路徑中。 – 2011-04-02 05:25:38

8

Gems安裝在系統級別,而插件安裝在應用程序級別。這意味着如果兩個或更多的應用程序在同一臺服務器上運行,他們可以共享寶石,但每個應用程序都有自己的插件。現在我會建議使用寶石,因爲隨着應用規模的擴大,它們更容易維護。

+0

我不同意,因爲我們不應該安裝寶石系統,它可能污染和崩潰我的應用程序。除此之外,還會說明一種情況。如果一個VPS有很多應用程序,並且如果系統安裝的寶石會崩潰,會發生什麼情況,所以爲此我們應該爲每個應用程序創建Gemset。 [使用Gemset for Rails應用程序](http://everydayrails.com/2010/09/13/rvm-project-gemsets.html)。 – VKatz 2016-09-24 07:11:14