gem和插件有什么区别?

mlz*_*boy 11 ruby-on-rails ruby-on-rails-3

我是Rails的新手,我对宝石和插件的概念感到困惑.任何人都能帮我解释一下吗?

seg*_*egy 8

插件只是从特定目录加载的库,gems 直接通过BundlerRubyGems加载.

这真的让人产生差异的是维护和管理.当您需要最新且最好的authlogic插件时会发生什么,您需要更新目录中的文件.当它是一个插件时,这听起来不是那么糟糕,但那些不断更新的东西呢?有一个现有的代码打包和分发系统(RubyGems),它有助于管理这些东西.

再次考虑authlogic示例,如果新版本现在需要一些其他依赖项会发生什么?使用RubyGems,gem文件明确定义了这种关系,插件系统没有,并且这样的定义将是多余的.

随着rails 3.x 中Bundler的出现,管理和分发项目使用的宝石变得非常容易.

TL; DR:插件基本上是没有包装信息的宝石.


the*_*gah 1

插件的使用越来越少,所以坚持使用 gem。Gems 和插件可以做完全相同的事情,这就是它们令人困惑的原因。然而,差异在于它们的组织方式,最重要的是宝石的管理方式,例如bundlerconfig.gem。管理 gem 及其版本要容易得多。插件必须安装在该vendor文件夹中,gems如果需要自定义,也可以安装在该文件夹中,或者可以将它们安装在 gem 目录中,只要 Rails 知道该目录所在的位置即可。当 Rails 开始时,大多数人使用插件来添加功能,但开发人员很快意识到 gems 提供了更好的打包和更新库的方法,因此大多数插件已经迁移到 gems,并且正在构建的插件越来越少。