Una aplicacion en distintos dominios


#1

Hola a todos ,

me preguntaba cual es la mejor forma de tener una aplicacion Rails en 3
dominios distintos y que esta renderee las vistas / layouts dependiendo
el
dominio en donde se encuentre. asi tambien como compartir cookies para
los 3
dominios

que me recomiendan, ? generlmente uso nginx + mongrel

me imagino que en el app controller se detecte el request.host y ahi
definir
el layout pero en el caso de compartir sessiones no se me ocurre, parece
que
no se puede en distintos dominios no?

Saludos

Atte.
Miguel Michelson Martinez


#2

Hola Miguel, hace poco tuve que hacer esto, pero en mi caso tenia
subdominios para distintos paises:

class ApplicationController < ActionController::Base

before_filter :current_country
before_filter :set_country_view_path

protected

def current_country
  @country_code ||= request.subdomains.shift
end

def set_country_view_path
  self.prepend_view_path "#{Rails.root}/app/views/#{@country_code}"
end

end

De esta manera logro que Rails coja mis vistas de acuerdo al pais donde
me
encuentro, por ejemplo, si el usuario ingreso a: ar.midominio.com,
entonces
Rails cojera la vista de la siguiente ruta:
app/views/ar/home/index.html.haml y en caso de que esta vista no exista
seguira buscando en el nivel superior, por lo que cogera la vista desde:
app/views/home/index.html.haml

Lo de compartir sesiones a traves de diferentes dominios no crea que sea
posible por cuestiones de seguridad en el navegador, en el caso de
subdominios si es una tarea sencilla, en el archivo de configuracion del
entorno que quieras puedes colocar esto:

config.action_controller.session = {
:session_domain => ‘.midominio.com’,
:session_key => ‘_av_session’,
:secret => ‘XXXXXXXXXX’
}

De todas maneras una busqueda simple te puede dar mas ideas:
http://tinyurl.com/dlglep

Saludos.


#3

Gracias Ruben

ahora me queda mas clara la pelicula

saludos

Atte.
Miguel Michelson Martinez

www.artenlinea.com

2009/3/26 Ruben. D. removed_email_address@domain.invalid


#4

Hola,

No podrás compartir sesiones entre diferentes dominios, solo lo
conseguirás
si lo haces con diferentes subdominios. Lo que quizás te interese hacer
es
tener diferentes dominios que redireccionen a uno central que haga la
distinción por subdominios, queda un poco liado pero es decir:

www.app1.com
www.app2.com --> app2.app1.com
www.app3.com --> app3.app1.com

Es por ejemplo lo que hace google con gmail para compartir la sesión, tu
entras a www.gmail.com pero te redirecciona hacia mail.google.com

Saludos,

2009/3/27 Miguel M. removed_email_address@domain.invalid


#5

Hola lista,

Ruben. D. escribió:

def current_country

ar.midominio.com http://ar.midominio.com, entonces Rails cojera la
:session_domain => ‘.midominio.com http://midominio.com’,
:session_key => ‘_av_session’,
:secret => ‘XXXXXXXXXX’
}

Solo para los que esten ya en rails 2.3.x ahora :session_domain y
:session_key se llaman :domain y :session y por defecto esta
configuracion ya no va en environment.rb sido en un initializer como
session_store.rb con algo como:

ActionController::Base.session = {
:key => ‘_kk_session’,
:domain => ‘midominio.com’,
:secret => ‘long string’
}

De todas maneras una busqueda simple te puede dar mas ideas:
http://tinyurl.com/dlglep

Saludos.


Rubén Dávila Santos.
http://rubenonrails.com

Un saludo.