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

时间:2011-07-25 11:31:42

标签: ruby-on-rails ruby-on-rails-3

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

1 个答案:

答案 0 :(得分:33)

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

在rails2中,这将使用plugin完成。现在,由于rails3引擎可以打包在gem

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

总结如下:

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

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

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

希望这有帮助。