宝石和插件有什么区别?

时间:2010-08-16 17:29:45

标签: ruby-on-rails

这可能是一个非常蹩脚的问题,但我仍然感到困惑,何时应该使用gem?何时应该在我的项目中使用插件。

它们之间的基本区别是什么?

5 个答案:

答案 0 :(得分:6)

基本区别是gem需要安装在运行Rails应用程序的系统上,而插件则与应用程序一起部署。更具体地说,插件存在于供应商/插件中,而宝石需要使用rake gem install gem_name进行安装。

至于何时使用它们,宝石往往更容易保持最新,但更具体地说,一些宝石使用本机C代码并专门为给定的操作系统(如Nokogiri)编译。这些需要作为宝石安装,因为它们在移动到另一个系统时将无法工作。而诸如acts_as_commentable之类的东西使用直接的ruby代码,可以从系统移动到系统。

答案 1 :(得分:1)

来自RailsGuides

  

Rails插件是核心框架的扩展或修改。

来自Rubygems.org

  

gem是一个打包的Ruby应用程序或库。

因此,2之间的最大区别是Rails插件专门用于Ruby on Rails应用程序,而宝石不是。

例如,让我们看一下Geokit

  

gem(geokit-gem)提供基本的基于位置的操作。

     

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

在这里你可以看到gem提供了Geokit的核心。这个gem可以在任何地方使用,而不仅仅是Rails应用程序。该插件为在Rails应用程序中使用geokit的用户提供了其他功能。在这种情况下,使用插件以及gem是可选的。

答案 2 :(得分:1)

在项目中安装插件时,它只能在相应的项目中使用。但是如果你安装一个gem,它可以被每个项目使用。这是宝石与宝石的主要区别。插件。

答案 3 :(得分:0)

Gem由rubygems分发,rubygems是官方的ruby库包管理器。插件是一种(可能是hacky)方式的rails插件。由于依赖性解析,我建议您尽可能使用gem。 Rails3通过与Bundler打包来实现这一点。

答案 4 :(得分:0)

当我想为特定的rails应用程序进行自定义更改而不影响我的所有系统时,每当gem工作时我会使用gems和插件。