在计算方面,引擎是基于输入不断产生输出的东西。但在 Ruby 中,这个术语似乎有点松散。创建 Refinery CMS 的人已经开始将扩展其系统功能的 gem 称为“引擎”。
基本上,我想知道的是,Spree,用 ruby 编写的开源电子商务 cms,是一个引擎吗?将其称为“狂欢引擎”是否正确?
在计算方面,引擎是基于输入不断产生输出的东西。但在 Ruby 中,这个术语似乎有点松散。创建 Refinery CMS 的人已经开始将扩展其系统功能的 gem 称为“引擎”。
基本上,我想知道的是,Spree,用 ruby 编写的开源电子商务 cms,是一个引擎吗?将其称为“狂欢引擎”是否正确?
正如 Rails 所定义的,引擎很像应用程序中的应用程序。狂欢就是其中之一,还有其他的。每个引擎都有自己的app文件夹,其结构与您在顶级应用程序中看到的结构相同。
您可以将一个或多个引擎组合到一个应用程序中,然后在顶部添加您自己的功能。这就是使像 Spree 这样的系统比您控制有限的固定用途 Rails 应用程序更灵活的原因。
只有当它们是独立的应用程序时,扩展 Rails 的东西才是真正的引擎。许多 gem 添加了比这更具体的功能,因此根据措辞更好地称为“插件”或“模块”。
构建自己的引擎实际上非常容易,并且对于跨多个不同应用程序分离和重用代码很有用。
Spree实际上由许多引擎组成......
过度烹饪的版本:引擎配备了(许多)典型 Rails 应用程序的内容,还有一些好处:开箱即用的命名空间,用于轻松复制迁移的生成器,以及将其安装在另一个 Rails 应用程序中的能力。
来自 http://guides.rubyonrails.org/engines.html
1 什么是引擎?
引擎可以被认为是为其主机应用程序提供功能的微型应用程序。Rails 应用程序实际上只是一个“增压”引擎,Rails::Application 类从 Rails::Engine 继承了很多行为。
尝试阅读本指南: http: //guides.rubyonrails.org/engines.html以及此演员表:http ://railscasts.com/episodes/277-mountable-engines