gem和插件有什么区别?

时间:2010-11-23 02:49:35

标签: ruby-on-rails ruby-on-rails-3

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

3 个答案:

答案 0 :(得分:8)

插件只是从特定目录加载的库,宝石直接通过BundlerRubyGems加载。

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

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

宝石和插件

gem存储在lib文件中

Gem是一个使用RubyGems定义的打包系统的打包Ruby应用程序。

插件存储在vendor / plugins

Rails插件是一个打包的Ruby应用程序,它扩展了核心Rails框架。