为什么Capistrano在current_path中使用/ u/apps /,即使我已设置:deploy_to

ico*_*ast 10 capistrano

由于某种原因,卡皮斯特拉诺几乎无法完成所有操作,因为它似乎认为我current_path应该参与其中/u/apps/.我已经设置了所有应该设置的变量(AFAIK),并且消除了所有其他类似的默认路径,但是这个仍然存在.

以下是相关变量返回的值:

current_dir: current
releases_path: /var/www/vhosts/dev.www.example.com/html/releases
shared_path: /var/www/vhosts/dev.www.example.com/html/shared
current_path: /u/apps/www.example.com/current
Run Code Online (Sandbox Code Playgroud)

我正在设置:deploy_to,所以不current_path应该根据它来计算!?

set :deploy_to, "/var/www/vhosts/dev.www.example.com/"
Run Code Online (Sandbox Code Playgroud)

ico*_*ast 6

这种kludgey解决方案只是手动

set :current_path, ""
Run Code Online (Sandbox Code Playgroud)

可以在Jamis Buck自己的电子邮件主题中解释更好的解决方案是在设置另一个依赖的变量时使用延迟评估current_path.就我而言,我有一个像这样的设置

set :some_path_var, "#{current_path}/some/path/"
Run Code Online (Sandbox Code Playgroud)

我不得不改成这样的东西:

set(:some_path_var) { "#{current_path}/some/path/" }
Run Code Online (Sandbox Code Playgroud)

通过传入一个块,没有立即评估:some_path_var,并且没有强制current_path基于默认值来评估:deploy_to