2011-03-24 39 views
2

我正在開始一個大型Rails項目,該項目將包括幾個獨立區域,包括管理區域,前端網站,用戶區域和api。具有多個命名空間的Rails應用程序

爲這些部分創建說,3個命名空間(離開前端網站作爲根)是明智的嗎?

似乎沒有關於命名空間的一般規則,它似乎是組織用途的正確選擇,因爲每個區域都需要多個控制器。

在我以前的Rails項目中,我總是命名空間管理員,但在這種情況下,長期運行多個命名空間是否存在任何缺點(關於路由/與其他命名空間交互)?

任何意見將不勝感激!

回答

3

如果您的項目確實由邏輯上獨立的區域組成,那麼我不會看到一個缺點。任何路由情況都可以用最小的努力來實現,所以這不是一個瑕疵。

有人認爲你必須記住的是你的項目將有一個額外的目錄嵌套級別。例如,你不能只查看視圖目錄並且對所有的視圖有一個好的想法,因爲它們都將存在於與它們的命名空間相對應的目錄中(測試同樣如此)。然而,這通常是需要的,因爲它有助於保持更有條理。

+0

太棒了!聽起來像命名空間對於這個項目來說是完美的。在命名空間中共享ApplicationController證明是非常棘手的?在命名空間內創建新的繼承控制器(例如,如果管理員需要單獨的認證過濾器等等)是否是常見做法? 感謝您的諮詢! – ericalli 2011-03-24 17:28:10

+0

完全沒有;所有控制器仍然繼承ApplicationController的子類,無論它們是否在命名空間中:'YourNamespace :: YourController 2011-03-24 17:37:08

+0

聽起來不錯!再次感謝您的見解。 – ericalli 2011-03-24 18:07:23

5

沒有缺點只有名稱空間有意義時纔有優勢。顯然,太多的命名空間可能會令人困惑和毫無意義,但分手admin/client/public是使用命名空間的一個非常常見的用例。

只是確保你給所有的控制器唯一的名稱,這樣你就不會碰上這傢伙跑了與命名空間的問題:http://blog.philburrows.com/articles/2008/05/02/rails-namespaces-rock-rails-namespaces-suck-/

+0

沒有考慮命名約定。偉大的建議,謝謝! – ericalli 2011-03-24 17:31:08

+0

哦,我一直在不同的命名空間中使用碰撞控制器名稱一段時間沒有問題。有種讓我感到恐慌的是這種問題會出現。也許這個問題已經在Rails 3中解決了? – 2011-03-24 18:19:22