首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在capistrano上的stage文件上设置应用程序名称

在capistrano上的stage文件上设置应用程序名称
EN

Stack Overflow用户
提问于 2013-07-24 01:18:44
回答 3查看 3.1K关注 0票数 4

我正在尝试使用multistage/ext版本部署我的应用程序。当每个阶段在不同的服务器上时,它工作得很好。但是对于一个特定的项目,我希望将两个阶段部署到同一服务器上。

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

我将application变量移到了stage文件中,并使用延迟加载定义了deploy_to变量。

config/deploy.rb

代码语言:javascript
复制
set :stages, %w(production beta)
set :default_stage, "beta"
require 'capistrano/ext/multistage'

#set :application, "myapp-beta"
set :user,        "deploy"
set (:deploy_to)  { "/home/#{user}/applications/#{application}" }

config/deploy/beta.rb

代码语言:javascript
复制
server "my.server.com", :web, :app, :db, primary: true

set :application,  "myapp-beta"
set :domains,      "beta.myapp.com"
set :branch,       "beta"   

我收到Please specify the name of your application, set :application, 'foo'错误

也许我应该考虑部署到不同的服务器,但现在我真的想知道为什么这不起作用。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-09-17 00:10:25

您的代码没有任何功能上的错误。正如Lavixu提到的,只要你在部署时指定阶段名称(即cap beta deploy:setupcap beta deploy),那么应用程序变量就会被识别。

票数 0
EN

Stack Overflow用户

发布于 2017-07-30 09:08:56

代码语言:javascript
复制
set (:deploy_to)  { "/home/#{user}/applications/#{application}" }

应该是

代码语言:javascript
复制
set :deploy_to, -> { "/home/#{user}/applications/#{application}" }
票数 0
EN

Stack Overflow用户

发布于 2018-06-28 00:56:01

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

代码语言:javascript
复制
set :deploy_to, -> { "/var/deploy/#{fetch(:application)}" }

尝试直接访问application时出现undefined local variable or method 'application' for main:Object错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17816835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档