当前位置:  开发笔记 > 后端 > 正文

deploy.rb:未定义的局部变量或方法`home` for main:Object

如何解决《deploy.rb:未定义的局部变量或方法`home`formain:Object》经验,为你挑选了1个好方法。

我知道有很多关于此错误消息的问题,但我找不到与我的相同背景中发生此错误的问题.

我正在尝试将先前工作的Capistrano配置从版本2迁移到Capistrano 3.不幸的是,调用会cap production deploy --dry-run生成错误

cap aborted!
undefined local variable or method `home' for main:Object
/myapp/config/deploy.rb:6:in `'

这是deploy.rb发生错误的第6行的内容:

set :user, "myuser"
set :application, "myapp"
set :domain, "mydomain"
set :repository, "git@github.com:acme/myapp.git"
set :home, "/home/myuser"
set :deploy_to, "#{home}/#{domain}"

我对Ruby知之甚少,但从我收集的内容来看,冒号意味着这些是符号,而不是变量,而在Capistrano文档中,它们使用相同的语法来定义"变量"(参见第5节"集合") deploy.rb中的共享信息")?

部署脚本在OS X上使用Ruby 2.0.0p247和Capistrano 2.9.0完美运行.现在在使用Ruby 1.9.3p545和Capistrano 3.1.0的CentOS上,出现上述错误.我对CapfileCapistrano 3 进行了几次更改,但保持deploy.rb不变,希望它能正常工作.



1> Patrick Osci..:

我不认为Capistrano会为你创建局部变量,但你可以自己创建:

domain = "mydomain"
home = "/home/myuser"

set :domain, domain
set :home, home
set :deploy_to, "#{home}/#{domain}"

或者,您可以使用fetch,对应方set:

set :domain, "mydomain"
set :home, "/home/myuser"
set :deploy_to, "#{fetch(:home)}/#{fetch(:domain)}"

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有