首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Capistrano多阶段部署到错误的目录

Capistrano多阶段部署到错误的目录
EN

Stack Overflow用户
提问于 2011-11-21 22:28:33
回答 3查看 5.1K关注 0票数 16

我最近更新了我的gem后,我的capistrano设置有一些问题。我有一个多阶段设置与生产和阶段设置。

/config/deploy.rb

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

/config/deploy/production.rb

代码语言:javascript
复制
# Set deploy path
set :deploy_to, "/var/www/mysite/live"
set :rails_env, "production"

/config/deploy/testing.rb

代码语言:javascript
复制
# Set deploy path
set :deploy_to, "/var/www/mysite/test"
set :rails_env, "test"

问题是它似乎忽略了我的deploy_to设置。它只是部署到默认的/u/apps/mysite。

我不知道它是否有任何相关性,所有这一切的原因都是从apache+passenger迁移到nginx+unicorn。我不认为这与此有任何关系,因为这只是结帐过程。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-17 19:56:27

我最终通过将以下代码添加到我的部署/生产.rb和testing.rb中解决了这个问题

代码语言:javascript
复制
set(:deploy_to)         { "/var/www/#{application}/live" }
set(:releases_path)     { File.join(deploy_to, version_dir) }
set(:shared_path)       { File.join(deploy_to, shared_dir) }
set(:current_path)      { File.join(deploy_to, current_dir) }
set(:release_path)      { File.join(releases_path, release_name) }
票数 0
EN

Stack Overflow用户

发布于 2012-10-25 00:33:53

我在Stack Overflow上偶然发现了这一点。这是一个老问题,但既然它被标记为开放,我就试一试。

我认为这可能是Capistrano实例加载方式的范围问题。

我注意到这个语法在production.rb和test.rb文件中不起作用

代码语言:javascript
复制
 set :deploy_to, "/var/www/mysite/live"

但这一条是:

代码语言:javascript
复制
set(:deploy_to)  { "/var/www/#{application}/live" }

这是一个细微的区别,但我认为真正起作用的是将信息作为Proc块传递,而第一个是作为字符串传递。我有一种不知不觉的怀疑,当Capistrano实例出现时,该字符串不再存在。

这将向我表明,您的加载或要求顺序有问题,因为您应该能够在这些文件中设置部署变量。如果你不能弄清楚它,你可以欺骗和包围部署/production.rb或部署/test.rb代码

代码语言:javascript
复制
Capistrano::Configuration.instance.load do
  # variables, etc here
end

这肯定会告诉您这个文件不是在Capistrano实例的作用域内加载的。

也是次要的点,但文件应该在

代码语言:javascript
复制
config/deploy # relative to your Rails app

代码语言:javascript
复制
/config/deploy/ # this is an absolute path off of your root folder

祝好运。希望你已经解决了这个问题!

票数 9
EN

Stack Overflow用户

发布于 2011-11-21 22:36:50

这些production.rb和testing.rb在项目中的什么位置?

确保它们在config/deploy下。

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

https://stackoverflow.com/questions/8213376

复制
相关文章

相似问题

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