Capistrano多级变量

dev*_*vth 9 capistrano

使用ext/multistage时,为什么不在deploy.rb中的stage(production.rb)中设置变量?

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

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

但是当我试图跑步时,它会抱怨

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

dev*_*vth 15

这看起来非常愚蠢,我可能不会这样做,但如果我将deploy.rb中的变量设置推迟如下,它确实有效:

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 }
Run Code Online (Sandbox Code Playgroud)