簡體   English   中英

Rails:命名空間與引擎?

[英]Rails : Namespacing vs Engines?

在PHP世界中待了很長時間之后,我才剛剛開始一個Rails項目。

該項目處於早期階段,這意味着是進行重大更改的好時機,並且目前包含兩個不同的Rails模塊,一個用於管理員,一個用於用戶,都在單獨的Rails實例中。 我想做的是將兩個項目合並到一個單一的Rails實例中,我相信從長遠來看,它將提高應用程序的可管理性。

兩個實例共享同一個數據庫,並且每個實例都有用於身份驗證的設計模型。 我一直在記錄自己有關合並兩個項目的方式,我想出了兩種選擇:第一種是創建兩個名稱空間,一個用於用戶,另一個用於管理員,並共享模型和框架邏輯。 第二個方法是為管理員和用戶創建引擎,這看起來更干凈,但更為復雜。

我已經閱讀了很多文檔,並且正在嘗試使用Rails,但是在這一點上,我需要一個更有經驗的意見。

預先謝謝您,我感謝您對此的想法。

命名空間和引擎都各有利弊。 使用哪一個取決於您的特定用例。 在大多數情況下,我建議使用名稱空間,因為它更容易使用並且可以減輕一些麻煩。 尤其是在共享數據模型時。 但是,當您想在多個應用程序中共享常見的隔離行為時,引擎非常有用。

引擎

優點

  • 隔離相關功能。 如果您有一些僅由其中一個引擎使用的表,則這特別好,因為它們可以使用帶前綴的表名來管理自己的數據庫遷移。
  • 可以在多個Rails應用程序中重復使用。 (在某些情況下)
  • 從整體式Rails應用程序中提取代碼的良好起點。
  • 減少使用大型代碼庫的不同引擎的開發人員破壞其他引擎之一的功能的機會。

缺點

  • 具有完全由引擎組成的應用程序不是一種常見的模式。 因此,新工程師將需要一些時間來習慣所有設置。
  • 共享通用功能可能會令人沮喪。 例如樣式表
  • 您很可能最終會以意外的方式在兩個引擎之間共享代碼。 這帶走了與Isolate related functionality優勢的某些價值。
  • 帶有Rails插件的文本編輯器往往具有奇怪的行為。 例如,在插件目錄中時,vim插件快捷方式有時不起作用

命名空間

優點

  • 簡單易用,已經有很多Rails約定可以遵循。
  • 共享資產和其他常用功能往往非常簡單。
  • 文本編輯器Rails插件完全支持。

缺點

  • 不清楚哪些模型或庫對不同的名稱空間很重要。

暫無
暫無

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

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