我如何在Ruby on Rails中使用插件架构?

sv_*_*_in 7 architecture ruby-on-rails social-networking plugin-architecture plug-and-play

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

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

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

Spa*_*asm 15

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

插件已被宝石和引擎取代了有关引擎所需的所有信息:http: //guides.rubyonrails.org/engines.html

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

原始答案供参考

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

Rails Engines是应用程序的小子集,可以放入任何Rails应用程序并从头开始处理应用程序的常见部分.

比如说你的社交网络应用程序有一个wiki,博客,聊天室等.你很可能想要创建一个wiki引擎,博客引擎和聊天室引擎.

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

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

对"引擎"插件的一些支持已经合并到Rails 2.3中的Rails核心代码库中.

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

看看一些引擎:

其他有用的阅读链接

在功能方面,您仍然可以拥有可以激活某些功能的管理区域,即.允许用户使用权限/角色系统访问此类区域,从而实现您的博客或Wiki.

如果你想构建一个支持某种扩展的CMS,比如Wordpress或Joomla,那么你必须构建它并提供指导,或者至少从用户的角度研究如何上传/安装引擎/插件.

不确定这对安全的影响

Redmine已将这种功能融入到他们非常棒的应用程序中.您可能想要挖掘源代码以获取提示和线索

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

HTH