我们有一个非常大的Rails应用程序,它有两个不同的部分:前端和CMS / Admin。我们希望将应用程序拆分为两部分(用于维护,因为我们有不同的团队在前端和后端工作,他们可能有不同的发布周期。)
一个想法是启动一个新的Admin 2.0应用程序,它可以访问原始应用程序中的模型/模式,但有自己的控制器/视图和自己的模型,可以扩展原始模型,直到完全解耦是安全的。这是可取的吗?如果没有,那么从一个单一的代码库迁移出来的适当计划是什么?
答案 0 :(得分:1)
警告,这有点暴力,不会去任何地方。
参与了一个非常大的应用程序,在你描述的庄园中运行(出于可扩展性的原因),我仍然有不同意见(没有确凿的答案)。
目前我们运营3个主要应用程序(+一个或两个使用模式片段的小应用程序)。
RVW(我们的管理员应用程序):这是唯一一个在单个服务器上运行并且负责维护架构的应用程序。
reevoomark:非常高的负载b2b app。这有许多服务器,每个服务器都有一个完整的堆栈(数据库服务器,每个节点一个应用服这些数据库的数据库填充了db export - import批处理作业。这在短期内效果非常好,它的剪切灵活性只是王牌,但应用程序之间的集成测试非常困难。
我的建议是不惜一切代价避免拆分应用程序,让DRY快速成为主要挑战。我的建议是坚持使用一个应用程序,两组路由(在环境变量启动时选择)。
这为您提供了其他解决方案的所有优势,同时隐含了代码共享。拆分测试包会缩短测试周期,使两个团队的管理更容易管理。我会避免在不同的代码库上工作,因为这会促使应用程序分离并使代码共享变得棘手(如.com)。
如果您决定拆分,请进行一系列高水平的跨应用测试。一组核心模型的自定义(每个应用程序)扩展听起来像一个好的计划,虽然有不同的代码库和团队,你可能仍然会有重复的代码。 Rails引擎应该是共享模型的好方法,但要为模型重新加载做好准备,使其变得有点精神分裂。
祝你好运!答案 1 :(得分:0)
你有namespaced your admin controllers吗?这将是一个相对容易的细分点,也避免了将代码分配到两个应用程序的许多负面影响。
答案 2 :(得分:0)
你考虑过Rails Engines吗?添加到2.3中的Rails。