2012-05-21 9 views
5

Pensé que haría una cosa simple pero potencialmente muy útil, y crear otro enlace simbólico llamado en vivo, que apunta a una versión arbitraria, y dejar actual en la cabeza donde normalmente está:puesta en escena y aplicación en vivo con capistrano

20120519235508 
20120521004833 
20120521024312 <-- live 
20120521025150 
20120521030449 <-- current 

entonces configurado para golpear www.mysite.com

live/public 

y stage.mysite.com para golpear

current/public 

Desafortunadamente, ambos hosts parecen ejecutar la misma aplicación y no 2 aplicaciones diferentes. Confirmé que httpd.conf tiene la configuración correcta y la reinicié. Sin embargo, no hay cambio, ambos siguen ejecutando la misma aplicación, la aplicación a la que se hace referencia por actual/público para ser exactos.

No sé si tengo una configuración incorrecta, o si hay que reiniciar algo más, o si esto simplemente no puede funcionar como me imaginaba. Estoy usando pasajero.

¿Puede alguien arrojar algo de luz sobre este tema, porque esta configuración sería MUY útil para muchos proyectos?

Respuesta

12

En lugar de crear otro enlace simbólico en el directorio de lanzamientos, sugiero usar la extensión de varias etapas. Con esta extensión puede definir diferentes etapas y agregarles configuraciones personalizadas. Por lo tanto, en lugar de utilizar un directorio de implementación para la puesta en escena y la producción, use uno separado para cada uno.

Añadir estas líneas para deploy.rb:

require "capistrano/ext/multistage" 

set :stages, ["staging", "production"] 
set :default_stage, "staging" 

Retire la variable deploy_to de deploy.rb. A continuación, cree un directorio de implementación dentro de config que tenga archivos con los nombres de las etapas. En este caso: deploy/staging.rb y deploy/production.rb. El contenido de staging.rb:

set :rails_env, "staging" 
set :deploy_to, "staging/capistrano" 

y lo mismo para production.rb:

set :rails_env, "production" 
set :deploy_to, "production/capistrano" 

Por supuesto cambiar las rutas en deploy_to. A continuación, señale staging.example.com a staging/capistrano/current/public y www.example.com a production/capistrano/current/public.

para hacer un despliegue puesta en escena, ejecutar cap staging deploy o simples cap deploy (recuerda, puesta en escena se establece por defecto en deploy.rb) y cap production deploy implementar en la producción.

+0

Gergo, este es totalmente el camino a seguir. Gracias por esto. También resolví el problema anterior por cierto, fue a causa de PassengerAppRoot en el archivo .htaccess. – pixelearth

+0

parece que no mencionaste que tengo que instalar la gema capistrano-ext? – pixelearth

+0

Posible. Ya estaba disponible en mi sistema (OS X) cuando comencé a usarlo, no recuerdo que tuve que instalarlo manualmente. –

Cuestiones relacionadas