簡體   English   中英

Rails 4子域最佳實踐

[英]Rails 4 Subdomain Best Practices

我正在尋求一些一般的見解並就此問題提供建議,而不是針對問題的具體解決方案。

我目前正在開發需要admin子域的應用程序,例如: admin.mydomain.com ,此admin子域將處理所有事情,例如管理用戶和在面板本身中設置內容以及對Dropbox的API調用以及不。

通常,該小組將與站點的公共方面的現有模型和控制器進行某種程度的交叉,並管理由管理員用戶提交的其自身內容。

話雖這么說,我應該如何去設計這個應用程序?

鑒於我的堆棧包括:

  • Nginx的
  • Phusion乘客
  • Ubuntu的
  • 滑軌4

我不確定是否可以使用2個較小的應用程序,因為我不知道在同一服務器上托管2個應用程序的最佳方法。 然后是諸如兩個不同進程的更大內存需求以及兩個應用程序之間的路由問題之類的事情。

相反,如果這是單個應用程序,則我需要設置一些時髦的路由,以確保諸如編輯用戶之類的操作僅在admin子域下才可用於登錄admin。

通過在線閱讀所有內容,可以使我對如何“物理地”設置某些東西有一個合理的理解(盡管我仍然不確定該領域中的內容),但是我仍然不確定如何構建此應用程序(2個或1個)路由子域,依此類推。

任何見解都會很棒,我很高興。

如果您是我,我將只使用一個應用程序,因為它具有很多優點:

  • 更高的性能,因為單個應用程序然后是多個應用程序消耗的內存更少。
  • 代碼的可維護性更高。
  • 應用程序的“用戶”和“管理員”部分之間的通信更加輕松。
  • Rails應用程序的內置路由機制本身就支持這種情況。
  • 輕松配置代理服務器(如nginx)以支持此功能。

如果您遵循我的想法,我會在路由中使用名稱空間來分隔“用戶”和“管理員”部分。 並使用device gem在管理部分添加身份驗證。

我有使用這種架構構建的多個應用程序,並且效果很棒! :)

如果決定使用兩個應用程序,則可以在配置文件中顯式設置admin.domain並將其指向一個應用程序,然后設置www。 一個指向另一個域。

我在我編寫的應用程序中做到了這一點,但這與您的結構有些不同。 您不能按照導軌使用控制器名稱空間嗎? 如果沒有,那么Railscasts會提供一些有關子域的良好信息。

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

除非有理由,否則請采用最簡單的解決方案:

一個應用程序,包括普通部分和管理人員。 這樣,您也可以從管理面板訪問模型(或其他應用程序邏輯),而不必尋找在多個應用程序之間共享模型的方法。 從一開始就可以輕松構建和維護。 如果應用程序太大,您仍然可以稍后再拆分。

至於如何:

  1. 子域上的路由約束將內容發送到正確的控制器
  2. 用於所有管理員交互(訪問控制!)的單獨控制器,理想情況下使用名稱分隔
  3. 根據需要共享模型或其他業務邏輯/對象(控制器中沒有業務邏輯!)
  4. 無需更改堆棧中的其他任何內容(所有邏輯都在rails中)

在兩者之間共享除模型(或其他業務邏輯對象)以外的任何內容時,請務必小心。 這不僅使結構不那么“堅固”,而且在您以后決定拆分時也會引起問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM