7

Estoy haciendo algunos experimentos con Mountable Engines. Primero necesito su opinión para un escenario, ¿es una buena idea que hagamos "trozo de módulos grandes" en una aplicación como "motores montables"?Montar un motor en el subdominio Rails 3.1

Intenté esto funciona muy bien, en el motor montable podemos acceder a los modelos de la aplicación globalmente y en la aplicación podemos acceder a los modelos del motor con el prefijo del módulo. Por lo tanto, funciona muy bien para mí.

Ahora llegaron a la pregunta original:

Quiero montar un motor a un subdominio, de manera que cada petición con subdominio específico debe ser servida por ese motor específico. Usé este código.

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

En este caso mydomain.com y admin.mydomain.com va a dashboard controller. Si cambio de las preferencias de esa manera

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

En este caso mydomain.com y admin.mydomain.com va a engine specific root controller.

¿Cómo podemos lograr este escenario y montar un motor en un subdominio específico?

Respuesta

11

que realizar la tarea mediante el uso de estas entradas de ruta:

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

¿Qué sucede si deseo poder acceder a mi dominio foo.com en foo.com y www.foo.com? Los cambios anteriores hacen que sea imposible cargar contenido desde foo.com. – jkndrkn

+0

Consulte la respuesta @samuelkobe arriba. –

+0

¿No es posible usar una expresión regular en: subdominio? p. scope: subdomain =>/^ $ | www/do ... –

5

Trabajar con rieles 3.2.12 y Ruby 1.9.3-194 llegué a una solución diferente que también trabaja a nivel local para evitar la www. problema del subdominio al tiempo que permite que haya un Motor en un cierto subdominio.

get "home/index" 

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

root :to => 'home#index' 

Podría estar totalmente equivocado, pero está funcionando hasta el momento.

+0

¡Muy útil! La directiva mount se puede hacer incluso más corta al usar 'mount Spree :: Core :: Engine => '/'' – Epigene