NoMethodError: Capistrano::Configuration:Class没有定义'instance'方法

3

我在部署方面遇到了一些问题。 rails版本为4.2.4, capistrano版本为3.4.0。 我不明白出了什么问题。有人可以帮我吗?

$ bundle exec cap production deploy --trace
** 调用 production (第一次)
** 执行 production
** 调用 load:defaults (第一次)
** 执行 load:defaults
cap 中止!
NoMethodError: Capistrano::Configuration:Class 没有定义 'instance' 方法
/home/denis/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.10.6/lib/bundler/capistrano.rb:12:in `'
config/deploy.rb:13:in `require'
config/deploy.rb:13:in `'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/capistrano-3.4.0/lib/capistrano/setup.rb:14:in `load'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/capistrano-3.4.0/lib/capistrano/setup.rb:14:in `block (2 levels) in '
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:240:in `call'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:240:in `block in execute'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:235:in `each'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:235:in `execute'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:179:in `block in invoke_with_call_chain'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:172:in `invoke_with_call_chain'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/task.rb:165:in `invoke'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:150:in `invoke_task'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:106:in `block (2 levels) in top_level'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:106:in `each'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:106:in `block in top_level'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:115:in `run_with_threads'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:100:in `top_level'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:78:in `block in run'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/capistrano-3.4.0/lib/capistrano/application.rb:15:in `run'
/home/denis/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/capistrano-3.4.0/bin/cap:3:in `'
/home/denis/.rbenv/versions/2.2.2/bin/cap:23:in `load'
/home/denis/.rbenv/versions/2.2.2/bin/cap:23:in `'
Tasks

我的Capfile

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rbenv' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

Gemfile

gem 'capistrano'
gem 'capistrano-bundler'
gem 'capistrano-rails'
gem 'capistrano-rbenv'

我的deploy.rb

require 'bundler/capistrano'
load 'deploy/assets'
set :repository, "git@bitbucket.org:test/test.git"

你是如何创建这个配置的?如果你使用 cap install,通常不会出现这种情况。 - will_in_wi
3个回答

1
您的 deploy.rb 文件不应包含 require 或 load 行。备份您的配置,删除您的 Capfile、config/deploy.rb 和 config/deploy/*,然后运行 cap install。根据个人喜好修改生成的配置文件。

1
请确保在项目目录下直接有Capfile文件。如果Capfile包含像require 'bundler/capistrano'这样的一行,请将其删除,这样就可以正常工作了。

0
请将以下内容添加到您的Capfile文件中,而不是config/deploy.rb文件中:
``` require 'bundler/capistrano' ```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接