NoMethodError:main:Object的未定义方法`on’

当我尝试bundle exec cap production deploy --trace我收到一条错误消息:

 deploy@h2540559:/www/apps/foodsoft$ bundle exec cap production deploy --trace ** Invoke production (first_time) ** Execute production ** Invoke load:defaults (first_time) ** Execute load:defaults ** Invoke rvm:hook (first_time) ** Execute rvm:hook cap aborted! NoMethodError: undefined method `on' for main:Object /usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-rvm-0.1.2/lib/capistrano/tasks/rvm.rake:17:in `block (2 levels) in ' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `call' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `block in execute' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in `each' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in `execute' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:187:in `block in invoke_with_call_chain' /usr/local/rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:180:in `invoke_with_call_chain' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:173:in `invoke' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-3.2.1/lib/capistrano/dsl/task_enhancements.rb:12:in `block in after' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `call' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `block in execute' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in `each' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in `execute' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:187:in `block in invoke_with_call_chain' /usr/local/rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:180:in `invoke_with_call_chain' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:173:in `invoke' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:150:in `invoke_task' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:106:in `block (2 levels) in top_level' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:106:in `each' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:106:in `block in top_level' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:115:in `run_with_threads' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:100:in `top_level' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:78:in `block in run' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:176:in `standard_exception_handling' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/application.rb:75:in `run' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-3.2.1/lib/capistrano/application.rb:15:in `run' /usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-3.2.1/bin/cap:3:in `' /usr/local/rvm/gems/ruby-2.0.0-p643/bin/cap:23:in `load' /usr/local/rvm/gems/ruby-2.0.0-p643/bin/cap:23:in `' /usr/local/rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `eval' /usr/local/rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `' Tasks: TOP => rvm:hook 

这是我的gemfile:

 # A sample Gemfile source "https://rubygems.org" gem "rails", '~> 4.2' gem 'sass-rails' gem 'coffee-rails' gem 'less-rails' gem 'uglifier', '>= 1.0.3' # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', platforms: :ruby gem 'jquery-rails' gem 'select2-rails' gem 'rails_tokeninput' gem 'bootstrap-datepicker-rails' gem 'date_time_attribute' gem 'rails-assets-listjs', '0.2.0.beta.4' # remember to maintain list.*.js plugins and template engines on update gem 'i18n-js', '~> 3.0.0.rc8' gem 'rails-i18n' gem 'mysql2' gem 'prawn' gem 'prawn-table' gem 'haml-rails' gem 'kaminari' gem 'simple_form' gem 'inherited_resources' gem 'localize_input', git: "git://github.com/bennibu/localize_input.git" gem 'daemons' gem 'twitter-bootstrap-rails', '~> 2.2.8' gem 'simple-navigation', '~> 3.14.0' # 3.x for simple_navigation_bootstrap gem 'simple-navigation-bootstrap' gem 'ransack' gem 'acts_as_tree' gem 'rails-settings-cached' gem 'resque' gem 'whenever', require: false # For defining cronjobs, see config/schedule.rb gem 'protected_attributes' gem 'ruby-units' gem 'attribute_normalizer' gem 'ice_cube', github: 'wvengen/ice_cube', branch: 'issues/50-from_ical-rebased' # fork until merged gem 'recurring_select' gem 'roo', '~> 1.13.2' gem 'spreadsheet' # we use the git version of acts_as_versioned, and need to include it in this Gemfile gem 'acts_as_versioned', github: 'technoweenie/acts_as_versioned' gem 'foodsoft_wiki', path: 'plugins/wiki' gem 'foodsoft_messages', path: 'plugins/messages' # plugins not enabled by default #gem 'foodsoft_uservoice', path: 'plugins/uservoice' group :production do gem 'exception_notification' end group :development do gem 'sqlite3' gem 'mailcatcher' gem 'web-console', '~> 2.0' # allow to use `debugger` https://github.com/conradirwin/pry-rescue gem 'pry-rescue' gem 'pry-stack_explorer' # Better error output gem 'better_errors' gem 'binding_of_caller' # gem "rails-i18n-debug" # chrome debugging extension https://github.com/dejan/rails_panel gem 'meta_request' # Get infos when not using proper eager loading gem 'bullet' # Hide assets requests in log gem 'quiet_assets' # Deploy with Capistrano gem 'capistrano', '~> 3.2.0', require: false gem 'capistrano-rvm', require: false gem 'capistrano-bundler', '>= 1.1.0', require: false gem 'capistrano-rails', require: false # Avoid having content-length warnings gem 'thin' end group :development, :test do gem 'ruby-prof', require: false end group :test do gem 'rspec-rails' gem 'factory_girl_rails' gem 'faker' gem 'capybara' # webkit and poltergeist don't seem to work yet gem 'selenium-webdriver' gem 'database_cleaner' gem 'connection_pool' # need to include rspec components before i18n-spec or rake fails in test environment gem 'rspec-core', '~> 3.2' gem 'rspec-rerun' gem 'rspec-legacy_formatters' gem 'i18n-spec' # code coverage gem 'simplecov', require: false gem 'coveralls', require: false end 

我的capfile

 # Load DSL and Setup Up Stages require 'capistrano/setup' # Includes default deployment tasks require 'capistrano/deploy' # Includes tasks from other gems included in your Gemfile # # For documentation on these, see for example: # # https://github.com/capistrano/rvm # https://github.com/capistrano/rbenv # https://github.com/capistrano/chruby # https://github.com/capistrano/bundler # https://github.com/capistrano/rails # require 'capistrano/rvm' # require 'capistrano/rbenv' # require 'capistrano/chruby' # require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' # Loads custom tasks from `lib/capistrano/tasks' if you have any defined. Dir.glob('lib/capistrano/tasks/*.{cap,rake}').each { |r| import r } 

还有我的deploy.rb

 # # Capistrano 3 deployment configuration # # http://www.capistranorb.com/ # https://semaphoreapp.com/blog/2013/11/26/capistrano-3-upgrade-guide.html # defaults that can be updated from the environment set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || "master" # you probably want to change these set :application, 'foodsoft' # application name (whatever you like) set :domain, 'biomio-giessen.de' # host set :user, 'deploy' # ssh deploy user set :keep_releases, 10 set :repo_url, 'git://github.com/foodcoops/foodsoft.git' set :deploy_to, "/www/apps/#{fetch :application}-#{fetch :stage}" # more settings which are probably ok set :log_level, :info set :linked_files, %w{config/database.yml config/app_config.yml config/initializers/secret_token.rb config/initializers/session_store.rb} set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} # assuming one server for everything, with one user for deploy and one for resque server fetch(:domain), user: fetch(:user), roles: [:web, :app, :resque, :db] # if you use RVM, uncomment the line in Capfile, and optionally uncomment rvm settings # set :rvm_ruby_string, :local # task hooks namespace :deploy do desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do # tell mod_passenger to reload the application execute :touch, release_path.join('tmp/restart.txt') end end after :restart, 'resque:restart' after :finishing, 'deploy:cleanup' # see lib/capistrano/tasks/plugins.cap #before 'bundler:install', 'enable_plugins:auto' end 

有谁知道如何解决这一问题?

非常感谢,Maxi

在运行捆绑更新之后我刚才遇到了同样的错误,没有主要版本更新,除了Rake到11之外。从capistrano 3.2.1升级到3.4.0为我修复了它!

我有同样的错误。

我的capistrano版本是3.1.0,rails版本是4.1.4。 但我的同事没有这个问题。 我尝试更改我的ruby版本,rvm版本与我的同事’配置相同。 它仍然无效。 所以我尝试gem列出所有这些相关的gem。 我发现我的sshkit比他高。

所以我将我的sshkit降级到1.7.1。

然后它工作。