Capistrano抛出NoMethodError

时间:2013-05-11 14:25:52

标签: ruby deployment rvm capistrano rbenv

我已经使用Ruby的Capistrano部署工具几年了,从来没有遇到太多问题。现在,在将Ruby升级到2.0后,我开始遇到各种错误,使我无法部署。

我已经完全卸载了RVM,除了我的基础OS X Ruby安装(我相信1.8.7)之外的所有东西,然后通过rbenv从头开始重新安装。

我正在通过rbenv运行Ruby 1.9.3-p0,并且安装了Capistrano gem版本2.15.4 - 但是每次我尝试从一个小的默认Capfile /中进行干运行部署cap -n deploy deploy.rb setup,我收到了这个错误:

/Users/jason/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/capistrano-2.15.4/lib/capistrano/recipes/deploy/scm/git.rb:234:in `block in query_revision': undefined method `sub' for nil:NilClass (NoMethodError)

我的Capfile只是运行$ capify .

的默认设置
# Capfile

load 'deploy'
# Uncomment if you are using Rails' asset pipeline
# load 'deploy/assets'
load 'config/deploy' # remove this line to skip loading any of the default tasks

config / deploy.rb非常简单:

set :application, "capistrano-example"
set :repository,  "git://github.com/jasonrhodes/capistrano-example.git"

set :scm, 'git'

set :user, "myusername"
set :deploy_to, "/home/myusername/jrhodes.me/public_html/capistrano-example"
set :domain, "myserver.com"
role :web, domain              # Your HTTP server, Apache/etc
role :app, domain              # This may be the same as your `Web` server

任何出现此错误的想法???

1 个答案:

答案 0 :(得分:0)

我不确定它是否会对你有所帮助,但我追溯到我对railsless-deploy gem的安装。似乎,即使它不是必需的,它仍然以某种方式加载并干扰了Cap的内置load 'deploy',并造成各种破坏(因为你不能无轨道部署和Cap的内置部署命名空间)。

无论如何,我删除了load 'deploy'行,在railsless-deploy中添加,一切都很顺利。