Rails应用程序架构和常见设置

时间:2012-06-15 22:30:57

标签: ruby-on-rails ruby architecture infrastructure

所以我开始公司项目将有几个组件:

起初......

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

    1. 信息
    2. 附表
    3. 基本报告
    4. 后来......

      1. 更深入的分析和bi
      2. 我想知道每个子弹项目是否有意义是自己的轨道项目,自包含和模块化(如果确实如此);或者如果它最适合它在同一个应用程序中。我可以设想一种情况,每个模块可以彼此独立地运行,不需要其余部分(用户功能除外)以及所有模块将一起使用的另一种情况。

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

        我知道这是一个普遍的问题,必然会得到很多“依赖”的回复(这是理所当然的)我正在寻找你如何设置这种/你的项目的意见/例子在铁轨。我是一个准的菜鸟,所以要温柔。

        提前致谢!

1 个答案:

答案 0 :(得分:4)

一般来说,我会认为某个网站是Rails应用程序的合适目标。应用程序的每个部分都可以在应用程序中拥有自己的命名空间,因此应用程序内部具有一些结构,但它们应该都是一个应用程序。考虑诸如会话之类的内容,您希望用户登录并使用您想要的网站的任何功能。您希望这些会话在一个应用程序中,而无需用户登录到不同的部分。

如果说复杂或扩展功能不是MVC架构的一部分(比如与外部API,数据挖掘等交谈),那么你可以将它偏移到一个单独的项目并将其包含为你的应用程序中的宝石。你仍然会有一个主要的Rails应用程序,包括那些Gems。

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

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

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