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

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

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

在rails2中,这将使用plugin完成。 现在因为rails3引擎可以包装在gem

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

总结如下:

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

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

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

希望这可以帮助。