Rails 3:引擎和宝石有什么区别?

don*_*ald 18 ruby-on-rails ruby-on-rails-3

两者之间有什么区别,何时应该使用另一个而不是另一个?

nat*_*vda 33

一个Engine在轨术语是一个Web应用程序的实际上是一个子程序.例如,博客,论坛或简单身份验证:这些不是完整的应用程序,而是可以添加到任何rails应用程序的页面/视图/控制器/模型.

在rails2中,这将使用a来完成plugin.现在因为rails3引擎可以打包成一个gem.

A gem是一个ruby库,可以在http://rubygems.org上找到,它是将ruby代码打包并分发给其他rubyists的标准(唯一)方法.

总结如下:

  • gem:是一个通用库,可以轻松安装,由版本管理,具有依赖性等.
  • 引擎:是Rails应用程序的子应用程序,并且由于Rails 3,它们作为gem分发(这很棒!).

所以你什么时候使用其中一个:

  • 如果要共享ruby功能,请创建一个gem
  • 如果您的rails应用程序的某些部分可以更普遍地使用,则创建一个引擎(并将其打包在gem中).

希望这可以帮助.

  • 他们都是宝石.通过实现一个名为`Railtie`的类,gem可以轻松地绑定到Rails.这意味着它可以将功能绑定到rails中.如果它实现了一个名为`Engine`的类,它可以提供更多:模型,视图,控制器,以及rails 3.1还有资产,如样式表,javascripts,......你提到的宝石都实现了`Railtie`绑定到Rails.这意味着这些是与Rails一起使用的.因此,根据您为Rails提供的功能,您可以选择创建"Railtie"或"Engine". (7认同)