Estoy intentando configurar Subdominios en Rails 3 por Ryan Bates screencast on subdomains. Sin embargo, no funciona para mí. Tengo la siguiente configuración:request.subdomain no se está configurando en Rails 3 durante el enrutamiento condicional
# routes.rb
constraints(Subdomain) do
get 'devices' => 'devices#all'
end
# lib/subdomain.rb
class Subdomain
def self.matches?(request)
# binding.pry
request.subdomain.present? && request.subdomain == "admin"
end
end
Cargando la url admin.localhost:3000/devices
debería ruta que yo devices#all
, sin embargo, obtener un error de enrutamiento Routing Error No route matches [GET] "/devices"
Es evidente que mi ruta no está funcionando.
puedo configurar una sesión de depuración pry
donde el comentario está por encima, y es golpeado, por lo que mi limitación está trabajando, pero me da el siguiente resultado:
[1] pry(Subdomain)> request.subdomain
=> ""
[2] pry(Subdomain)> request.subdomains
=> []
[3] pry(Subdomain)> request.host
=> "admin.localhost"
Así carriles no recoge el administrador porción de la url y colocándola en la variable de subdominio. Aunque podría simplemente usar el valor de host para filtrar a las rutas de administrador, me gustaría mantener las cosas limpias y correctas.
¿Cómo es que Rails no está estableciendo el valor del subdominio?
Editar
Tanto jdoe y coreyward son correctas con sus respuestas. Lo que me estaba tirando era que también estaba usando pow
y xip.io
para acceder al sitio y obtener el mismo error. Lo cual era extraño porque http://admin.app_name.192.168.1.68.xip.io/devices
tiene un tld> 1. Lo que sucedía era que el subdominio para xip
era admin.app_name.192.168.1.68
, que también falla dado que las coincidencias son lógicas y no enruta.
> ¿Cómo es que Rails no está configurando el valor del subdominio? Creo que todavía es Rack en ese punto. –
@OscarDelBen no lo es.Se trata de ActionDispatch 'request.inspect # =>
+1 para una aclaración adicional sobre Pow & Xip.io. :) – coreyward