2011-04-02 71 views

回答

37

宝石

  • 宝石是使用由RubyGems定义的包装系统的封装红宝石应用。
  • Rails本身就是一块宝石。

    Rails的宝石被安装在JRuby的1.0 \ LIB \红宝石\宝石\ 1.8 \宝石\轨-1.2.3为:

    DIR
    DIR内置
    68465 CHANGELOG
    DIR CONFIGS
    DIR调度
    DIR DOC
    DIR环境
    307 fresh_rakefile
    DIR助手
    DIR HTML
    DIR LIB
    1072 MIT许可
    11969 Rake文件
    8,001自述
    lib目录包含了所有的宝石源代码。

  • 我们可以安装,升级和查询宝石version.If一个使用工具,像我GemInstaller,人们可以很容易用一个简单的配置文件自动RubyGems的安装和加载。

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

插件

  • 插件是Rails框架的延伸。
  • 无法使用命令进行升级。要升级,必须卸载并安装升级版本。
  • 必须挂钩入轨应用程序。 (必须有init.rb)
  • 有一个install.rb文件。
  • 插件无法发布为Gem。
  • 只能在应用程序范围内使用。

Goldspike插件安装在供应商\插件\的应用程序的轨道集成目录:
7089的build.xml
1141 LICENSE.TXT
DIR插件
6,675的pom.xml
1,447自述文件
DIR样本
插件/ goldspike目录由组成210 24 init.rb
25 install.rb
DIR LIB
549 Rake文件
536自述
DIR任务
DIR测试
lib目录包含所有的插件的源代码。

宝石VS插件

  • Rails的有来自供应商/插件/目录加载插件的方式。这很可能会被弃用,因为Rails增加了对供应商/ gems /目录中的项目 捆绑宝石的支持。 rspec的宝石版本是用于日常使用的宝石版本。除非您支持1.2.x系列或更早版本的Rails应用程序,否则应该使用这些应用程序。
  • 由于您不包含实际应用程序中的库,因此使用Gems检入和检出存储库通常会变得更快。 在分布式团队中,使用与涉及软件版本不兼容有关的插件通常存在较少的问题。
  • 一般的经验法则是将Rails特有的功能作为一个插件,同时将更多的通用Ruby库制作成gem。
+0

谢谢@Piyush。你能告诉我,使用插件和宝石。然后,为什么/我们在哪里使用插件和宝石。请用实时概念解释。 – 2011-04-02 04:55:52

+0

hi @ user409617,现在每天都在使用所有插件。所以两者几乎相同。但我个人更喜欢插件,因为我可以查看插件内的代码,并确切知道发生了什么。 (不是那种宝石不能,但它有点麻烦):D – sameera207 2011-04-02 05:14:48

+1

@ sameera207我不同意,我相信绝大多数Rails应用程序现在使用的是宝石而不是插件。尽管如此,有些人确实会出售它们的宝石,或者通过Bundler将它们安装在相对于该项目的路径中。 – 2011-04-02 05:25:38

8

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

+0

我不同意,因为我们不应该安装宝石系统,它可能污染和崩溃我的应用程序。除此之外,还会说明一种情况。如果一个VPS有很多应用程序,并且如果系统安装的宝石会崩溃,会发生什么情况,所以为此我们应该为每个应用程序创建Gemset。 [使用Gemset for Rails应用程序](http://everydayrails.com/2010/09/13/rvm-project-gemsets.html)。 – VKatz 2016-09-24 07:11:14