如何使用 Capistrano 为不同环境部署 gem 和相关分支?

How to deploy gem with related branch for different environments using Capistrano?

我正在使用 Capistrano 3 部署 RoR 应用程序。我已经有针对不同环境的部署脚本:阶段、生产等。 但我需要有可能在这些具有不同 gem 分支的环境中进行部署。例如,如果我要部署到生产环境,我想使用 gem 的 master 分支;如果我要部署到阶段,我想使用 gem 的开发分支等。 我已经有了针对每个环境的自定义分支定义的解决方案,就像这样用于生产:

gem 'custom-gem', git: 'path-to-git', branch: 'master'

但我需要更灵活的 Capistrano 方式解决方案,而不是每个分支的自定义定义。可能吗?

将您的 gem 移动到像 Gemfile

中的组
group :staging do 
gem 'custom-gem', git: 'path-to-git', branch: 'stag'
end

group :production do 
gem 'custom-gem', git: 'path-to-git', branch: 'master'
end