我是Rails的新手,我对宝石的概念感到困惑。插件。任何人都可以帮我解释一下吗?
答案 0 :(得分:8)
插件只是从特定目录加载的库,宝石直接通过Bundler或RubyGems加载。
这真的让人产生差异的是维护和管理。当您需要最新且最好的authlogic插件时会发生什么,您需要更新目录中的文件。当它是一个插件时,这听起来不是那么糟糕,但那些不断更新的东西呢?有一个现有的代码打包和分发系统(RubyGems),它有助于管理这些东西。
再次考虑authlogic示例,如果新版本现在需要其他依赖项,会发生什么?使用RubyGems,gem文件明确定义了这种关系,插件系统没有,并且这样的定义将是多余的。
随着rails 3.x中Bundler的出现,管理和分发项目使用的宝石变得非常容易。
TL; DR:插件基本上是没有包装信息的宝石。
答案 1 :(得分:1)
插件的使用越来越少,所以坚持使用宝石。宝石和插件可以做同样的事情,这就是他们混淆的原因。然而,差异在于它们的组织方式,最重要的是如何管理宝石,例如bundler
或config.gem
。管理宝石及其版本要容易得多。插件必须安装在vendor
文件夹中,如果需要自定义gems
,那么它们也可以安装在该文件夹中,或者只要rails知道该目录的位置,就可以将它们安装在gem目录中位于。当rails启动时,大多数人使用插件来添加功能,但开发人员很快意识到gems提供了一种更好的方法来打包和更新库,因此大多数插件已迁移到gem并且构建的插件更少。
答案 2 :(得分:-1)
宝石和插件
gem存储在lib文件中
Gem是一个使用RubyGems定义的打包系统的打包Ruby应用程序。
插件存储在vendor / plugins
中Rails插件是一个打包的Ruby应用程序,它扩展了核心Rails框架。