Deployment 设置:从Capistrano3中的服务器配置将_部署到

Deployment 设置:从Capistrano3中的服务器配置将_部署到,deployment,capistrano,capistrano3,Deployment,Capistrano,Capistrano3,在我的Capistrano3部署中,我想将set:deploy_设置为,->{/srv/www/#{fetch(:application)}},因此:deploy_to对于它部署到的每个服务器都是不同的 在我的staging.rb文件中,我有: server 'dev.myserver.com', user: 'deploy', roles: %w{web app db}, install_path: 'mycustom/path' server 'dev.myserver2.com', use

在我的Capistrano3部署中,我想将
set:deploy_设置为,->{/srv/www/#{fetch(:application)}}
,因此
:deploy_to
对于它部署到的每个服务器都是不同的

在我的
staging.rb
文件中,我有:

server 'dev.myserver.com', user: 'deploy', roles: %w{web app db}, install_path: 'mycustom/path'
server 'dev.myserver2.com', user: 'deploy', roles: %w{web app db}, install_path: 'mycustom/other/path'

我的问题是:是否可以使用我在
:deploy\u to
中定义的“安装路径”?如果可能的话,你会怎么做呢?

最后,在环顾四周之后,我遇到了Capistrano的一位开发人员提出的一个问题,他明确表示,无法做到

引自:

不可能,对不起。fetch()(如广泛记录的)读取值 set by set(),这是在正则表达式上使用set()和fetch()的唯一原因 ruby变量是为了在插件和应用程序之间提供一致的API 扩展,因为set()可以在以后解析进程

通过服务器()在主机对象中设置的变量 命令属于单个主机,其中一些主机、用户、角色等 有特殊的含义。有关更多信息,请参阅

如果您特别需要部署到每个目录上的不同目录 您可能不应该使用内置任务(它们 不适合您的需要),而是从Gem复制deploy.rake 进入您自己的项目,并根据需要进行修改。在这种情况下 可能是不获取fetch(:deploy_to),而是从主机读取 财产

你可以在做任何依赖于你的事情之前,先做一些事情 在调用fetch(:deploy_to)时,可以使用 主持人,一些财产,但我很确定这会让人兴奋和兴奋 有趣的方式