Ruby on rails 插件和Ruby gems之间的区别?

Ruby on rails 插件和Ruby gems之间的区别?,ruby-on-rails,ruby,plugins,gem,Ruby On Rails,Ruby,Plugins,Gem,插件和gems之间有什么区别?它们的不同用途是什么?您在何处以及为什么要使用一个而不是另一个?Gem Gem是一个使用由定义的打包系统打包的ruby应用程序 Rails本身就是一颗宝石 Rails gem安装在jruby-1.0\lib\ruby\gems\1.8\gems\Rails-1.2.3中,其形式为: DIRbin DIR内置 68465变更日志 DIR配置 DIR调度 DIRdoc DIR环境 307新鲜_耙铲 DIR助手 DIRhtml DIRlib 1072麻省理工学院许可证

插件和gems之间有什么区别?它们的不同用途是什么?您在何处以及为什么要使用一个而不是另一个?

Gem

  • Gem是一个使用由定义的打包系统打包的ruby应用程序
  • Rails本身就是一颗宝石

    Rails gem安装在jruby-1.0\lib\ruby\gems\1.8\gems\Rails-1.2.3中,其形式为:

    DIRbin
    DIR内置
    68465变更日志
    DIR配置
    DIR调度
    DIRdoc
    DIR环境
    307新鲜_耙铲
    DIR助手
    DIRhtml
    DIRlib
    1072麻省理工学院许可证
    11969耙形锉
    8001自述文件
    lib目录包含所有gem源代码

  • 我们可以安装、升级和查询gem版本。如果使用像my这样的工具,只需一个简单的配置文件就可以轻松地自动安装和加载RubyGems

  • 为Ruby解释器安装的Gem可以由该解释器在系统范围内使用
  • Gem可以作为插件发布
  • 也可以在供应商/宝石中出售
插件

  • 插件是Rails框架的扩展
  • 无法使用命令升级。要升级,必须先卸载,然后安装升级版本
  • 必须连接到rails应用程序中。(必须有init.rb)
  • 有一个install.rb文件
  • 插件不能作为Gem发布
  • 只能在应用范围内使用
Goldspike插件安装在应用程序的vendor\plugins\rails integration目录中:
7089 build.xml
1141 LICENSE.txt
DIR插件
6675 pom.xml
1447自述文件
DIR样本
plugins/goldspike目录包含
24 init.rb
25 install.rb
DIRlib
549耙形锉
536自述文件
DIR任务
DIR测试
lib目录包含所有插件源代码

Gem与插件

  • Rails有一种从vendor/plugins/目录加载插件的方法。这很可能会遭到反对,因为Rails增加了对将gems与项目绑定的支持 在vendor/gems/目录中。 rspec的gem版本是用于日常使用的版本。除非您支持1.2.x系列或更早版本中的Rails应用程序,否则应该使用这些工具
  • 使用Gems签入和签出存储库通常会变得更快,因为实际应用程序中没有包含库。 在分布式团队中,使用与软件版本不兼容相关的插件通常会遇到较小的问题
  • 一般的经验法则是使Rails特定的功能成为插件,同时将更通用的Ruby库变成gems

Gems安装在系统级,而插件安装在应用程序级。这意味着,如果两个或多个应用程序在同一台服务器上运行,它们可以共享gem,但每个应用程序都有自己的插件。现在我建议您使用gems,因为随着应用程序的扩展,gems更易于维护。

谢谢@Piyush。你能告诉我插件和Gems的用法吗。然后,我们为什么/在哪里使用插件和Gems。请用实时概念解释一下。嗨@user409617,现在一天所有的插件都是大家用的。因此,两者几乎相同。但我个人更喜欢插件,因为我可以查看插件内部的代码,并确切知道发生了什么。(并不是说gems不能,而是有点麻烦):D@sameera207我不同意,我相信现在绝大多数Rails应用程序都使用gem而不是插件。不过,有些人确实会出售他们的gems,或者通过Bundler将它们安装在与项目相关的路径中。@Brandon对不起,实际上我想说的是“gems”而不是“plugins”。因此,措辞应该更正为“现在所有人都在使用它所有的宝石”。。。再次抱歉:我不同意“CHANGELOG”之前的数字“68465”是什么,因为我们不应该在系统范围内安装gems,因为它可能会污染并使我的应用程序崩溃。除此之外,我们还将讲述一个场景。如果一个VPS有多个应用程序,如果gems按系统方式安装,会发生什么情况?因此,我们应该为每个应用程序创建Gemset。