2010-11-09 14 views
9

Al usar ext/multistage, ¿por qué las variables establecidas en una etapa (production.rb) no están disponibles en deploy.rb?Variables de varias etapas de Capistrano

En production.rb: set :domain, "domain.com"

En deploy.rb: set :vhost, "/var/www/#{domain}"

Pero cuando trato de correr, se queja

undefined local variable or method `domain' for #<Capistrano::Configuration:0x00000100d07248> (NameError) 

Respuesta

15

esto parece muy tonto, y estoy probablemente no está haciendo esto bien, pero funciona si aplazo la configuración de la variable en deploy.rb como este:

set(:stage_domain) { "#{domain}" } 
set(:vhost) { "/var/www/#{stage_domain}" } 
set(:repo_dir) { "#{vhost}/repository" } 
set(:deploy_to) { "#{repo_dir}" } 
set(:httpdocs_link) { "#{deploy_to}" } 
role(:web) { stage_domain } 
+1

Según los muchachos en la lista de correo de Capistrano, esta es la forma correcta de hacerlo. – devth

+0

¿Puedes explicar lo que quieres decir con diferimiento? –

+0

¿Quiere decir que 'set: vhost,"/var/www/# {domain} "' de su pregunta no se encuentra en la misma posición que 'set (: vhost) {"/var/www/# { stage_domain} "}' de tu respuesta? –

Cuestiones relacionadas