3

在计算方面,引擎是基于输入不断产生输出的东西。但在 Ruby 中,这个术语似乎有点松散。创建 Refinery CMS 的人已经开始将扩展其系统功能的 gem 称为“引擎”。

基本上,我想知道的是,Spree,用 ruby​​ 编写的开源电子商务 cms,是一个引擎吗?将其称为“狂欢引擎”是否正确?

4

4 回答 4

3

正如 Rails 所定义的,引擎很像应用程序中的应用程序。狂欢就是其中之一,还有其他的。每个引擎都有自己的app文件夹,其结构与您在顶级应用程序中看到的结构相同。

您可以将一个或多个引擎组合到一个应用程序中,然后在顶部添加您自己的功能。这就是使像 Spree 这样的系统比您控制有限的固定用途 Rails 应用程序更灵活的原因。

只有当它们是独立的应用程序时,扩展 Rails 的东西才是真正的引擎。许多 gem 添加了比这更具体的功能,因此根据措辞更好地称为“插件”或“模块”。

构建自己的引擎实际上非常容易,并且对于跨多个不同应用程序分离和重用代码很有用。

于 2013-05-01T06:54:05.730 回答
2

我认为 Guide Getting Started with Engines中有很好的解释。

于 2013-05-01T06:25:31.273 回答
2

Spree实际上由许多引擎组成......

过度烹饪的版本:引擎配备了(许多)典型 Rails 应用程序的内容,还有一些好处:开箱即用的命名空间,用于轻松复制迁移的生成器,以及将其安装在另一个 Rails 应用程序中的能力。

于 2013-05-01T06:34:13.810 回答
1

来自 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

于 2013-05-01T06:24:59.273 回答