作为一个学习项目,我正在为我所在的功夫俱乐部开发一个Rails 3.1的论坛应用程序。我想在Github上管理我的代码,所以俱乐部或其他任何人都可以使用它。我们的想法是在Github上放置一个“普通”,可自定义的版本,但在另一个更私密的git存储库中管理自定义,例如不同的样式或不同的登录方案。
使Rails应用程序可自定义的最佳方法是什么?这些自定义可能包括:CSS代码,Javascript代码,HTML视图,种子数据(例如,我的俱乐部中的用户组),完整的附加视图或覆盖单一视图方法。理想情况下,自定义位于单独的目录中,因此它们也可以单独放在git存储库中。
以下是我想到的一些方法:
custom
中(使用第二个私有仓库进行管理,可以作为git子模块安装),其内容通过{{1等等,但路由,视图和控制器呢?我感兴趣的是其他人如何处理这个问题以及有什么限制。
编辑:也许我应该将其描述为混合的Rails / Git问题 - 我试图在git存储库(即具有纯灰色背景的论坛)中保留现成的应用程序没有徽标),我希望保留定制版本所需的所有数据和代码,即现成版本的“实例”,根据另一个存储库(体育俱乐部)中的部署域的需求进行定制具有预定义用户组,徽标等的论坛。我希望能够轻松地在这两者之间切换,所以只有在生产站点上部署后才能看到实例网站。
答案 0 :(得分:1)
Rails方式(至少我对它的理解)是将功能构建为Rails引擎。
关于如何执行此操作的好例子,我会查看RailsAdmin和Devise等项目。它们绝对是复杂的项目,但它们提供了许多您似乎正在寻找的功能。
例如,RailsAdmin作为gem安装,提供完整的管理界面,几乎不需要任何配置。当您想要更改其行为时,会有一个初始化文件,允许您传递如何对用户进行身份验证,呈现表单,组模型等。
这种方法很容易应用于论坛,最初只需要告知您的用户模型。其他所有内容都可以在配置中被假设并可选地覆盖。
Devise展示了一种进一步采用配置的方法。有一个Devise生成器将gem的内置视图复制到应用程序的views/
文件夹,在这里可以自由修改它们并覆盖gem视图。
但是,既然你提到这是一个学习项目,我建议你不要一次性完成这一切。只需构建一个普通的Rails应用程序,并按照您希望的方式使其运行,即可获得所需的所有功能。一旦完成(并且花费的时间比您想象的要长),您的下一个项目就是将论坛功能提取到可自定义的引擎中。