来自deploy.rb的代码段
task :prod1 do
set :deploy_to, "/home/project/src/prod1"
end
task :prod2 do
set :deploy_to, "/home/project/src/prod2"
end
Run Code Online (Sandbox Code Playgroud)
我有2个如上所述的任务.现在不是手动运行"cap prod1 deploy"或"cap prod2 deploy",而是想创建一个任务"prod",根据服务器上存在的文件设置所需的"deploy_to".
就像是:
task :prod do
if (A_FILE_IN_SERVER_EXISTS)
set :deploy_to, "/home/project/src/prod2"
else
set :deploy_to, "/home/project/src/prod1"
end
Run Code Online (Sandbox Code Playgroud)
我怎么做?
Szy*_*Jeż 10
你可以这样做:
task :set_deploy_to_location do
if capture("[ -f /etc/passwd2 ] && echo '1' || echo '0'").strip == '1'
set :deploy_to, "/home/project/src/prod2"
else
set :deploy_to, "/home/project/src/prod1"
end
logger.info "set deploy_to = #{deploy_to}"
end
Run Code Online (Sandbox Code Playgroud)
这将满足您的需求.你可以使用像这样的钩子之前和之后钩住这个方法:
before :deploy, :set_deploy_to_location
Run Code Online (Sandbox Code Playgroud)