2012-06-15 38 views
0

于是我开始了对公司的项目,将有几个组成部分:Rails应用程序的体系结构和常用的设置

起初...

  1. 工作列表
  2. 客户端配置文件的创建和管理
  3. 用户管理和访问(登录,注册,角色等)

...

  1. 消息
  2. 附表
  3. 基本报告

方式后...

  1. 更深入的分析和BI

我想知道,如果它使感觉每个子弹项目它自己的铁轨项目,自包含和模块化(如果确实如此);或者如果它最好是在同一个应用程序中。我可以设想一种情况,即每个模块可以彼此独立运行,以至于不需要其他模块(除了用户功能)和所有模块一起使用的另一种情况。

在我看来,许多任务可以用像Sinatra这样的轻量级框架来处理(然后在物理上位于rails应用程序的下方)。它也似乎有一个在服务器上运行几个rails应用程序的开销很大。但我并不完全了解操作每种场景的所有优缺点。

我知道这是一个普遍的问题,必然会得到很多“它取决于”类型的回应(并且正确如此)我正在寻找意见/例子,你如何设置这种类型/你的种类项目在rails中。我是一个准小饭馆,所以要温柔。

在此先感谢!

回答

4

一般来说,我会考虑一个网站是Rails应用程序的合适目标。应用程序的每个部分都可以在应用程序中拥有自己的命名空间,因此该应用程序在内部有一些结构,但它们都应该是一个应用程序。考虑像会话这样的事情,您希望用户登录并使用您想要的网站的任何功能。您希望在一个应用程序中进行这些会话,而无需用户登录到不同的部分。如果有复杂或扩展的功能不是MVC体系结构的一部分(也就是说与外部API,数据挖掘等进行交谈),那么您可以将其抵消到一个单独的项目中并包含它作为您的应用程序中的宝石。您仍然会拥有一个包含这些Gems的主要Rails应用程序。

您可能还想将项目的一部分捆绑到一个可重用的Rails引擎中,该引擎可以加载到多个项目中。例如,Devise可处理用户登录和管理。它是一个Rails引擎,捆绑成一个Gem,包含在你的项目中。

Meducation(我的一个网站)的另一个例子。我正在将我们的电子邮件跟踪系统提取到its own Rails engine的过程中,因为我觉得它的功能与Meducation并列,而不是它的核心部分。然后我可以在其他项目中使用它。

在您的具体示例中,我认为您的需求在一个Rails应用程序中很合适。

+0

感谢您的回复。您的网站比喻是有帮助的。我现在要深入了解Rails引擎:)。 –

+0

很高兴帮助。如果您认为回答您的问题,请不要忘记将答案标记为已接受! :) – iHiD