7

Sto facendo alcuni esperimenti con i motori montabili. Per prima cosa ho bisogno della tua opinione per uno scenario, è una buona idea creare "blocchi di grandi moduli" in un'applicazione come "motori montabili".Montare un motore su sottodominio Rails 3.1

Ho provato questo funziona benissimo, Nel motore montabile possiamo accedere ai modelli di app a livello globale e in app possiamo accedere ai modelli di motore con prefisso del modulo. Quindi funziona benissimo per me.

Ora è venuto a domanda iniziale:

voglio montare un motore per un sottodominio, in modo che ogni richiesta con specifica sottodominio deve essere servita da quel motore specifico. Ho usato questo codice.

root :to=>'dashboard#index' 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 

In questo caso mydomain.com e admin.mydomain.com va a dashboard controller. Se cambio le preferenze del genere

scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
root :to=>'dashboard#index' 

In questo caso mydomain.com e admin.mydomain.com va a engine specific root controller.

Come possiamo realizzare questo scenario e montare un motore su sottodominio specifico?

risposta

11

ho compire l'operazione utilizzando queste voci di percorso:

scope :subdomain => 'www' do 
    root :to=>'dashboard#index' 
end 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
+0

E se volessi poter accedere al mio dominio foo.com sia su foo.com che su www.foo.com? Le modifiche sopra riportate rendono impossibile caricare il contenuto da foo.com. – jkndrkn

+0

Fare riferimento alla risposta di @ samuelkobe sopra. –

+0

Non è possibile usare un'espressione regolare in: sottodominio? ad es. scope: subdomain =>/^ $ | www/do ... –

5

Lavorare con Rails 3.2.12 e Ruby 1.9.3-194 sono arrivato a una soluzione diversa che funziona anche a livello locale per evitare il www. problema di sottodominio mentre si consente che ci sia un motore in un determinato sottodominio.

get "home/index" 

constraints :subdomain => 'store' do 
    mount Spree::Core::Engine, :at => '/' 
end 

root :to => 'home#index' 

Potrei sbagliarmi completamente ma sta funzionando finora.

+0

Molto utile! La direttiva mount può essere resa ancora più breve usando 'mount Spree :: Core :: Engine => '/'' – Epigene