2014-02-16 104 views
0

我正在尋求一些有關此問題的一般洞察力和建議,而不是針對問題的具體解決方案。Rails 4 Subdomain最佳實踐

我目前正在開發一個需要管理員子域的應用程序,例如:admin.mydomain.com,這個管理子域將處理所有的事情,比如管理用戶和設置面板內的內容以及API調用Dropbox和什麼不。

一般來說,面板會與網站公共端的現有模型和控制器有點交叉,並管理由管理員用戶提交的自己的內容。

有人說這應該怎麼去設計這個應用程序?

鑑於我的籌碼包括:

  • Nginx的
  • 的Phusion客運
  • Ubuntu的
  • 軌道4

我一點兒也不知道是否不小於2應用程序就是這樣,因爲我不知道在同一臺服務器上託管2個應用程序的最佳方式。然後有兩個不同的進程需要更大的內存需求,以及兩個應用程序之間的路由問題。相反,如果這是一個單一的應用程序,我需要設置一些時髦的路由,以確保像編輯用戶這樣的東西只有在admin子域下才能登錄管理員。

隨着所有的內容在線閱讀,它給了我如何設置一些'物理'的合理理解(雖然我仍然不確定在該領域),但我仍然不知道如何構建這個,2個應用程序或1,子域的最佳路由等等。

任何見識都會很棒,我非常喜歡泡菜。

回答

0

如果您決定使用兩個應用程序,那麼您可以在配置文件中明確設置admin.domain,並將其指向一個應用程序,然後設置www。一個指向另一個域。

我在我編寫的應用程序上做過這件事,但與您的結構有點不同。 您是否可以不按照導軌指南使用控制器名稱空間?如果沒有,那麼Railscasts在子域上有一些很好的信息。

http://railscasts.com/episodes/221-subdomains-in-rails-3 http://railscasts.com/episodes/123-subdomains-revised

1

如果我是你,我會去與單一的應用程序,因爲它有很多優點:

  • 更高的性能,因爲有較少的內存由單個應用程序消耗,然後通過倍數。
  • 代碼更高的可維護性。
  • 「應用程序」的「用戶」和「管理」部分之間的通信更簡單。
  • rails應用程序的內置路由機制本身支持這些場景。
  • 簡單配置代理服務器(如nginx)來支持這一點。

如果您遵循我的想法,我會在路由中使用命名空間來分隔'user'和'admin'部分。並使用device gem在管理部分添加驗證。

我有用這樣的架構建立的多個應用程序,它的工作真棒! :)

0

除非有一個理由不,去從最簡單可行的解決方案:

一個應用程序,其中包括正常部分以及管理員的東西。像這樣,您可以從管理面板訪問您的模型(或其他應用程序邏輯),而無需找到跨多個應用程序共享它們的方式。 開始構建和維護只需要更快。如果應用程序變得太大,您以後仍然可以隨時拆分它。

至於如何:(!訪問控制)的子域

  1. 路由約束送東西到右控制器
  2. 單獨的控制器對所有管理的互動,最好命名空間的
  3. 分享模式或其他業務邏輯/對象(在控制器中沒有業務邏輯!)
  4. 堆棧中的其他任何內容都不需要更改(所有邏輯都在導軌中)

在共享除兩者之間的模型(或其他業務邏輯對象)之外的任何內容時要非常小心。這不僅會使結構減少「固體」,而且當您決定稍後拆分它時也會造成問題。