7

我必须在 Ruby on Rails 上建立一个社交网站。网站中的功能可能会不时更改;所以我们需要轻松添加/删除功能。此外,我们可能正在建立另一个社交网站。由于这些原因,我们正在考虑为 RoR 中的社交网站构建一个基本框架,该框架具有安装或卸载框架扩展的功能。

我以前在 Joomla 工作过!CMS 及其用于添加/删除扩展的架构是我所关注的。在 Joomla 中!安装通常有一个管理端,您可以从中添加/删除/自定义扩展。

我是 RoR 的新手,发现很难决定如何做到这一点。任何帮助将不胜感激。

4

2 回答 2

15

2015 年更新:这在 2009 年得到了回答,但发生了很多变化

插件已被 Gems 和 Engines 取代有关 Engines 所需的所有信息:http: //guides.rubyonrails.org/engines.html

引擎是为您的 Rails 应用程序构建封装和可重用代码的绝佳方式。

原始答案供参考

在开发方面,Rails 引擎和/或插件可能是您正在寻找的。

Rails 引擎是应用程序的小子集,可以放入任何 Rails 应用程序并从头开始处理应用程序的公共部分。

例如,假设您的社交网络应用程序有一个 wiki、博客、聊天室等。您很可能想要创建一个 wiki 引擎、博客引擎和聊天室引擎。

引擎允许您在不同的应用程序中重复使用此类功能,因此您不必重复自己。

看看:http ://rails-engines.org/

在 Rails 2.3 中,对“引擎”插件的一些支持已合并到 Rails 核心代码库中。

我还建议看看 github 上的一些公共项目,看看人们是如何使用引擎的。

看看一些引擎:

其他有用的阅读链接

在功能方面,您仍然可以拥有一个可以激活某些功能的管理区域,即。通过允许用户使用权限/角色系统访问此类区域,您的博客或 wiki。

如果您想构建一个支持 Wordpress 或 Joomla 等某种扩展的 CMS,那么您将不得不构建它并提供指导方针,或者至少从用户的角度研究如何上传/安装引擎/插件。

不确定这对安全的影响

Redmine已将这种功能放入其出色的应用程序中。您可能想要挖掘源代码以获取提示和线索

最后,Adva_CMS基本上采用了这种方法,并为他们的 CMS 应用程序创建了许多引擎

高温高压

于 2009-10-09T08:02:03.807 回答
4

引擎仍然是一个非常可靠的方法,获取这些信息的新位置位于此处: http: //guides.rubyonrails.org/engines.html

但是您需要的是更具体的应用程序。许多应用程序随着时间的推移有机地开发这些东西。他们从手工制作其中的一些开始,然后定期对其进行重构,直到找到与软件设计模式一致的模式,然后他们开发了一个插件框架。

你打算向最终用户公开你的界面吗?给第三方开发商?应用程序的哪些部分由这些插件控制?它只是表示层吗?它会影响数据模型吗?考虑这样一个事实,当您发布任何类型的外部接口时,您正在开发您需要遵守的合同。

您可以查看这些设计模式:http ://en.wikipedia.org/wiki/Software_design_pattern 。他们将帮助您弄清楚如何管理您的开发过程。如果您只是在开发内部使用的插件,那么它们的真正目的是什么?是什么让它们与模块不同?

于 2014-12-27T02:18:27.877 回答