Ruby 在capistrano上的后台文件上设置应用程序名称

Ruby 在capistrano上的后台文件上设置应用程序名称,ruby,capistrano,Ruby,Capistrano,我正在尝试使用多级/扩展部署我的应用程序。当每个阶段都在不同的服务器中时,它可以正常工作。但是对于一个特定的项目,我想在同一台服务器上部署两个阶段 为此,我需要在每台服务器上设置不同的应用程序名称。这就是不起作用的地方 我将应用程序变量移动到stage文件中,并使用延迟加载定义deploy\u to变量 config/deploy.rb config/deploy/beta.rb 我得到请指定应用程序的名称,设置:application,'foo'错误 也许我应该考虑部署到另一台服务器,但现在我

我正在尝试使用多级/扩展部署我的应用程序。当每个阶段都在不同的服务器中时,它可以正常工作。但是对于一个特定的项目,我想在同一台服务器上部署两个阶段

为此,我需要在每台服务器上设置不同的应用程序名称。这就是不起作用的地方

我将
应用程序
变量移动到stage文件中,并使用延迟加载定义
deploy\u to
变量

config/deploy.rb config/deploy/beta.rb 我得到
请指定应用程序的名称,设置:application,'foo'
错误

也许我应该考虑部署到另一台服务器,但现在我真的想了解为什么这不起作用


谢谢

您的代码在功能上没有问题。如前所述,只要在部署时指定阶段名称(即
cap-beta-deploy:setup
cap-beta-deploy
),应用程序变量就会被识别

set (:deploy_to)  { "/home/#{user}/applications/#{application}" }
应该是

set :deploy_to, -> { "/home/#{user}/applications/#{application}" }

我不得不使用
fetch
引用其他capistrano变量。即:

set :deploy_to, -> { "/var/deploy/#{fetch(:application)}" }

试图访问
应用程序
时,直接引发了一个
未定义的局部变量或main:Object的方法“application”错误。

您正在部署生产吗?您有:应用程序集吗?我尝试并复制了确切的错误。这是因为没有设置变量应用程序。因此,我假设您没有调用cap-beta-deploy:setup。相反,您必须调用cap deploy:setup或其他一些通用任务,而不指定定义应用程序变量的环境。
set :deploy_to, -> { "/home/#{user}/applications/#{application}" }
set :deploy_to, -> { "/var/deploy/#{fetch(:application)}" }