在计算方面,引擎是基于输入不断产生输出的东西。但在 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