插件和Ruby宝石之间的区别?

Mr.*_*ack 33 ruby gem plugins ruby-on-rails

插件和宝石有什么区别?每种用途有何不同?您在哪里以及为何使用其中一个?

Piy*_*too 39

宝石

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

    Rails gem安装在jruby-1.0\lib\ruby​​\gems\1.8\gems\rails-1.2.3中:

    DIR bin
    DIR builtin
    68,465 CHANGELOG
    DIR configs
    DIR dispatches
    DIR doc
    DIR environment
    307 fresh_rakefile
    DIR helpers
    DIR html
    DIR lib
    1,072 MIT -LICENSE
    11,969 Rakefile
    8,001 README
    lib目录包含所有gem源代码.

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

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

插入

  • 插件是Rails框架的扩展.
  • 无法使用命令升级.升级一个必须卸载然后安装升级版本.
  • 必须要迷上rails应用程序.(必须有init.rb)
  • 有一个install.rb文件.
  • 插件无法作为Gem发布.
  • 只能在应用范围内使用.

Goldspike插件安装在应用程序的vendor\plugins\rails-integration目录中:
7,089 build.xml
1,141 LICENSE.txt
DIR 插件
6,675 pom.xml
1,447 README
DIR 示例
插件/ goldspike目录包含
24个init.rb
25 install.rb
DIR lib
549 Rakefile
536 README
DIR 任务
DIR 测试
lib目录包含所有插件源代码.

宝石vs插件

  • Rails有一种从vendor/plugins /目录加载插件的方法.这很可能会弃用,因为Rails已经添加了对与gem/gems /目录中的项目捆绑gems的支持.rspec的gem版本是用于日常使用的版本.除非您在1.2.x系列或更早版本中支持Rails应用程序,否则应该使用它们.
  • 使用Gems登记和签出存储库通常会变得更快,因为您不在实际应用程序中包含库.使用与分布式团队中软件版本不兼容的插件相关的插件通常较少.
  • 一般的经验法则是将Rails特定的功能作为一个插件,同时将更多通用的Ruby库变成gems.


ser*_*i12 9

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