2011-11-21 16 views
16

Tengo algunos problemas con la configuración de mi capistrano después de actualizar mis gemas últimamente. Tengo una configuración de varias etapas con una configuración de producción y puesta en escena.Capistrano Despliegue multietapa en el directorio incorrecto

/config/deploy.rb

# setup multistage 
set :stages, %w(testing production) 
set :default_stage, "testing" 
require 'capistrano/ext/multistage' 

/config/deploy/production.rb

# Set deploy path 
set :deploy_to, "/var/www/mysite/live" 
set :rails_env, "production" 

/config/deploy/testing.rb

# Set deploy path 
set :deploy_to, "/var/www/mysite/test" 
set :rails_env, "test" 

El problema es que parece ignorar mi configuración deploy_to. Simplemente se despliega en el/u/apps/mysite predeterminado.

No sé si tiene alguna relevancia, la causa de todo esto es un movimiento de apache + pasajero a nginx + unicornio. Sin embargo, no creo que tenga nada que ver con eso, ya que este es solo el proceso de pago.

+1

Tiene que haber una manera de hacer esto sin necesidad de duplicar la configuración en cada etapa individual. Ideas? – thekingoftruth

+0

Responda su pregunta con la solución y acéptela, para que se muestre como respondida. – mrbrdo

Respuesta

0

finalmente me solucionó este añadiendo lo siguiente a mi desplegar/production.rb y testing.rb

set(:deploy_to)   { "/var/www/#{application}/live" } 
set(:releases_path)  { File.join(deploy_to, version_dir) } 
set(:shared_path)  { File.join(deploy_to, shared_dir) } 
set(:current_path)  { File.join(deploy_to, current_dir) } 
set(:release_path)  { File.join(releases_path, release_name) } 
0

¿Dónde se encuentran esos production.rb y testing.rb ubicados en el proyecto?

Asegúrate de que estén por debajo de config/deploy.

+0

Sí, están en /config/deploy/production.rb y testing.rb –

+0

intenten requerir 'capistrano/ext/multistage' antes de establecer las etapas – kain

+0

Intentaré también usar set: deploy_to, "/ mypath/# { stage} "en el deploy.rb principal – kain

9

Me encontré con esto en Stack Overflow. Es una vieja pregunta, pero dado que está marcado como abierto, voy a intentarlo.

Creo que esto podría ser un problema de alcance con la forma en que se cargan las instancias de Capistrano.

noto esta sintaxis no funciona en los archivos production.rb y test.rb

set :deploy_to, "/var/www/mysite/live" 

Pero esto se hace:

set(:deploy_to) { "/var/www/#{application}/live" } 

Es una diferencia sutil pero creo que el uno eso funciona en realidad está pasando la información como un bloque de Proc, mientras que el primero lo está pasando como una cadena. Sospecho furtivamente que para cuando la Instancia Capistrano se convierta en realidad, ese hilo ya no está presente.

Esto me indicaría que algo no funciona en su carga o requiere orden, ya que debería poder establecer las variables de implementación en estos archivos. Si no se puede averiguarlo es posible que pueda engañar a y rodean el/test.rb código desplegar/production.rb o Implementar con

Capistrano::Configuration.instance.load do 
    # variables, etc here 
end 

Eso definitivamente te diría que este el archivo no se está cargando dentro del alcance de la instancia de Capistrano.

también punto menor, pero los archivos deben estar en

config/deploy # relative to your Rails app 

No

/config/deploy/ # this is an absolute path off of your root folder 

buena suerte. ¡Espero que ya hayas resuelto este problema!

+2

El 'set (: deploy_to) {"/var/www/# {application}/live "}' no funciona con capistrano 3.x. Recibo el siguiente mensaje 'número incorrecto de argumentos (1 por 2)' – czerasz

+0

El capítulo 3 es un IIRC de reescritura completo de API, están tratando de limpiar la base de código heredada. Esta sintaxis definitivamente funcionará en 2 ... :) – engineerDave

-4

¿Podría ser solo el orden que tiene en su deploy.rb? poner la requieren por encima de las puestas en escena

require 'capistrano/ext/multistage' 

# setup multistage 
set :stages, %w(testing production) 
set :default_stage, "testing" 
+4

Como se explica en la página oficial [wiki] (https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension) para la extensión de varias etapas , el 'require' ** debe ** venir después de los dos' set'. – asymmetric

Cuestiones relacionadas