2012-06-15 46 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