我必须在 Ruby on Rails 上建立一个社交网站。网站中的功能可能会不时更改;所以我们需要轻松添加/删除功能。此外,我们可能正在建立另一个社交网站。由于这些原因,我们正在考虑为 RoR 中的社交网站构建一个基本框架,该框架具有安装或卸载框架扩展的功能。
我以前在 Joomla 工作过! CMS 及其用于添加/删除扩展的架构是我所关注的。在 Joomla 中!安装通常有一个管理端,您可以从中添加/删除/自定义扩展。
我是 RoR 的新手,发现很难决定如何做到这一点。任何帮助将不胜感激。
最佳答案
2015 年更新:这在 2009 年得到了回答,很多变化
插件已被 Gems 和 Engines 取代
有关引擎所需的所有信息:
http://guides.rubyonrails.org/engines.html
引擎是为您的 Rails 应用程序构建封装和可重用代码的绝佳方式。
原始答案供引用
在开发方面,Rails 引擎和/或插件可能是您正在寻找的。
例如,假设您的社交网络应用程序有一个 wiki、博客、聊天室等。您很可能想要创建一个 wiki 引擎、博客引擎和聊天室引擎。
引擎允许您在不同的应用程序中重复使用此类功能,因此您不必重复自己。
看看:http://rails-engines.org/
Some support for ‘engine’ plugins has been merged into the Rails core codebase in Rails 2.3.
我还建议看看 github 上的一些公共(public)项目,看看人们是如何使用引擎的。
看看一些引擎:
其他有用的阅读链接
在功能方面,您仍然可以拥有一个可以激活某些功能的管理区域,即。通过允许用户使用权限/角色系统访问此类区域,您的博客或 wiki。
如果您想构建一个支持 Wordpress 或 Joomla 等某种扩展的 CMS,那么您将不得不构建它并提供指导方针,或者至少从用户的角度研究如何上传/安装引擎/插件。
不确定这对安全的影响
Redmine已经将这种功能放入了他们很棒的应用程序中。您可能想挖掘 source code提示和线索
最后 Adva_CMS 基本采用了这种方式,创建了a number of Engines用于他们的 CMS 应用程序
高温高压
关于ruby-on-rails - 如何在 Ruby on Rails 中拥有插件架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1542130/