ruby-on-rails – 构建“大型”Rails应用程序的最佳实践

我的问题是寻求最佳实践,一般性建议和洞察力,而不是解决具体问题。

我正在计划一个我认为相当大的Rails项目的早期阶段。在最简单的层面上,它为目标用户提供了一个切割器CMS。所以用户注册并选择一个子域名,并给予一个漂亮的基本网站CMS。

因此,整个应用程序有大约4个不同的方面:

>向最终用户销售产品的销售网站 – www.myapp.com
>工作人员可以登录和管理帐户的中央管理区域 – www.myapp.com/superadmin
>用户自己的网站 – subdomain.myapp.com
>用户的管理区域/ CMS – subdomain.myapp.com/admin

所以真的我正在寻找的是构建应用程序的最佳实践。即是否应该将其全部推广到一个巨大的应用程序中,还是应该分解超过2个(或更多)较小的应用程序?

如果部署为一个应用程序,我可以看到关于路由的问题,因为销售网站和用户的网站都需要一个根路径集,此外,我不希望通过用户的网站访问销售网站的路由。可以在Rails还是Apache级别(mod重写?)中完成任何操作,以确保不会混合路由?

如果拆分超过2个以上的应用程序,如何使应用程序共享相同的数据库?这甚至是个好主意吗?分割应用程序是否有任何好处(例如在应用程序的一个区域中分离问题,而不是将所有内容都关闭)?

我意识到这个帖子提出了很多不同的问题,但感谢任何可以给我的建议和见解。

我认为将您的疑虑隔离到单独的应用程序中的好处超过了成本。我可能开始只有2个应用程序(一个用于主站点和superadmin,一个用于客户端站点和管理员),访问同一个数据库,但您可以做4。

缺点是你没有真正的孤立,因为所有的应用程序都绑定到一个数据库。您将最终遇到与数据库的缩放问题,但是从一个数据库开始简单就可以启动。稍后进行缩放的一种策略是添加客户端站点和主站点应用程序使用的从属数据库,而管理应用程序使用主数据库。这与缓存的TON一起会让你相当远。

使用多个rails应用程序访问一个数据库没有任何问题,但是您将需要一种方式来在整个应用程序中共享通用代码。你的模型大部分。我之前已经完成了这一切,把我所有的模型抛在一个插件中,我作为一个子模块在git中或作为外部的svn共享。拥有单独的应用程序将使每个应用程序更小,更容易维护。

但是,你在哪里保持迁移?你在哪里测试你的模型?我会选择superadmin应用程序。此外,您更改模型或模式,现在您必须检查2-4个应用程序,并确保它们仍然可以工作!

更好的隔离,通过Web API(SOA)分离数据库和应用程序间通信,您不用担心。 SOA我认为是一定要走的路,但是SOA第一次开始时可能还不成熟。

无论如何,使用单独的应用程序可以设置您的SOA,但您不必跳过单个数据库开始。

http://stackoverflow.com/questions/1816723/best-practice-for-structuring-a-large-rails-app

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 构建“大型”Rails应用程序的最佳实践