为Rails应用程序构建扩展框架

我正在开始研究我需要什么来为Rails应用程序构建用户级插件系统(如Wordpress插件),所以我很欣赏一些通用指针/建议。 通过用户级插件,我指的是一个用户可以解压缩到一个文件夹并将其显示在管理界面上的包,允许他们添加一些额外的配置然后激活它。

这样做的最佳方法是什么? 还有其他开源项目吗? Rails本身已经为可以利用的程序员级插件提供了什么? 任何可以帮助我的Rails插件?

插件必须能够:

  • 运行自己的迁移 (使用它 ?它没有记录)
  • 有权访问我的模型 (插件已经可以)
  • 有视图添加内容的入口点 (可以使用content_for和yield完成 )
  • 替换整个视图或部分 (如何?)
  • 提供自己的管理员和面向用户的视图 (如何?)
  • 创建自己的路线 (或者只是宣布它的存在,让为它创建路线,以避免插件踩到彼此的脚趾)

还有什么我想念的吗?

此外,有没有办法限制插件可以访问哪些表/操作有关迁移和模型,还限制他们访问路由(可能让它们包括但不删除路由)?

PS:我会尽量保持这个更新,编译我想出的东西和相关答案,以便为其他人提供一种指导。

你可能想看一下mephisto ,这是一个用ruby on rails构建的博客软件,并且有附加的插件支持。 不知道你的想法是否有效,但可能会给你一些好的见解。 源可以在GitHub上找到 。

你应该看看deface gem。 它允许自定义rails视图,通过钩子添加内容并替换整个视图/部分。 狂欢正在使用这个gem,所以你也可以看看狂欢 。 除了视图,他们还有其他自定义应用程序的解决方案,以便您可以找到更多问题的答案。