Ist es möglich, ganze Rails-Anwendungen unter einem gemeinsamen Namespace zu erstellen?Kann ich in neuen Rails-Anwendungen gemeinsame Namespaces haben?
Nehmen wir an, dass mein Firmenname Acme, Inc. ist und ich habe die folgenden Schienen Projekte: Blog, Store, WebService.
standardmäßig, wenn ich so etwas wie rails new blog
tun werden die generierten Anwendungen wie:
module Blog
class Application < Rails::Application
module Store
class Application < Rails::Application
module WebService
class Application < Rails::Application
wo jedes Projekt/Anwendung selbst enthalten ist, und es gibt keinen impliziten Bezug auf das Unternehmen. Im Idealfall würde Ich mag all diese Anwendungen unter dem Firmennamensraum haben, so können wir sie als verweisen:
AcmeInc::Blog::Application
AcmeInc::Blog::Entities::Article
AcmeInc::Store::Application
AcmeInc::Store::Entities::Product
AcmeInc::Store::Entities::Order
AcmeInc::Store::Entities::Customer
etc...
Ist das möglich? Empfohlen?
Verwendung: Rubin-2.0.0-P451, Schienen 3.2.17
aktualisieren
Snapshot von generierten Dateien und Projektstruktur nach Schienen neues acme/Blog wie vorgeschlagen zu tun :
Dann, wie Sie diese Klassenmethoden aufrufen können und wo Sie dieses Modul einbeziehen? –
Diese 3 Anwendungen sollten unabhängig voneinander sein. Klassenmethoden und -module sollten genauso aufgerufen werden, wie sie in der Standard-App aufgerufen werden. Die Aufnahme von AcmeInc dient nur dazu, alle diese Apps unter der Codebasis-ID des Unternehmens zu gruppieren. Dies ist ein sehr übliches Verfahren in der .net-Welt, aber ich bin mir nicht sicher, ob Ruby/Rails-Apps dem gleichen Muster folgen sollten, daher meine Frage. – qbantek
Welchen Zweck erfüllt diese Gruppierung? Wenn Sie versuchen, eigenständige Anwendungen zu verwenden, die einige Elemente teilen und interagieren, sollten Sie sich [Rails-Engines] (http://guides.rubyonrails.org/engines.html) ansehen. Wenn Ihr Anliegen nur der Namensraum für kosmetische Zwecke ist, denke ich, dass Sie dort vielleicht einige Konventionen bekämpfen. – tirdadc