5

是否可以在通用名稱空間下創建整個rails應用程序?我可以在新的rails應用程序中使用通用名稱空間嗎?

讓我們假設我的公司名稱是Acme公司,並且我有以下Rails項目:Blog,Store,WebService。

默認情況下,如果我這樣做rails new blog生成的應用程序將是這樣的:

module Blog 
    class Application < Rails::Application 

module Store 
    class Application < Rails::Application 

module WebService 
    class Application < Rails::Application 

,每一個項目/應用程序是自包含的,不存在對公司沒有隱式引用。我非常希望有公司命名空間下這一切的應用程序,所以我們可以把它們稱爲:

AcmeInc::Blog::Application 
    AcmeInc::Blog::Entities::Article 

AcmeInc::Store::Application 
    AcmeInc::Store::Entities::Product 
    AcmeInc::Store::Entities::Order 
    AcmeInc::Store::Entities::Customer 

etc... 

這可能嗎?推薦的?


使用: 紅寶石2.0.0-P451,軌道3.2.17


做軌道新極致/博客後的建議更新

快照生成的文件和項目結構:

snapshot

+0

那麼如何調用該類的方法以及在哪裏包含該模塊呢? –

+0

這3個應用程序應該是相互獨立的。類方法和模塊應該以默認應用程序調用的相同方式調用。包括AcmeInc只是將所有這些應用程序按照公司的代碼庫標識符進行分組。這是.net世界中很常見的過程,但我不確定ruby/rails應用程序是否應遵循相同的模式,因此我的問題。 – qbantek

+0

該分組的用途是什麼?如果你試圖讓自包含的應用程序共享一些元素並進行交互,你可能需要看看[Rails引擎](http://guides.rubyonrails.org/engines.html)。如果你的擔心只是爲了美化目的的命名空間,我認爲你可能在那裏打擊一些約定。 – tirdadc

回答

1

正確的方法是使用引擎。每個引擎就像一個獨立的應用程序,用它自己的路線,測試套件,等等,但你可以有一個像耙子任務的一些常見的基礎設施等

http://guides.rubyonrails.org/engines.html

0

如果您爲了管理你的代碼,你爲什麼不製作一個可以包含在每個應用程序中的Blog Gem。然後,您將在Gem的一個公共存儲庫下管理代碼。對我來說,這是Rails/Ruby的方式來做到這一點

1

我想我大概是晚在這裏回答這個,因爲其他人已經提出了很好的方法。就像在一個公共存儲庫中維護代碼並創建rails引擎一樣。

我想分享這個名爲spree的着名項目,它遵循您正在尋找的架構。你可以訪問狂歡的code on github here

例如:

  • Spree::Core - spree_core發動機作爲寶石,以保持所有模型和基礎模塊等
  • Spree::Backend - spree_backend發動機作爲寶石以保持所有管理相關的控制器,視圖,資產等
  • Spree::Frontend - spree_frontend引擎作爲寶石來維護面向用戶的代碼ie cont滾筒,視圖,與之相關的資產。

我猜你可以用它作爲你的應用程序開發的參考。

+0

謝謝你提到施普雷。我將代碼分解爲一個項目的參考。 – qbantek

+0

當然,我也會鼓勵你看看rails代碼庫。它會幫助你理解框架結構和黑客行爲。 :) – Surya

相關問題