web-dev-qa-db-fra.com

NoMethodError: méthode non définie `on 'pour main: Object

lorsque j'essaie de bundle exec cap production deploy --trace, un message d'erreur apparaît:

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 <top (required)>'
/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 `<top (required)>'
/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 `<main>'
/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 `<main>'
Tasks: TOP => rvm:hook

Voici mon 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

mon 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 }

et aussi mon 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

Est-ce que quelqu'un sait comment réparer ceci? 

Merci beaucoup, Maxi

15
Maxiquester

J'ai eu la même erreur tout à l'heure après l'exécution d'une mise à jour de paquet, aucune version majeure n'a été mise à jour, à l'exception de Rake à 11. Une mise à niveau de capistrano 3.2.1 à 3.4.0 l'a corrigée pour moi!

38
Marthyn Olthof

J'ai la même erreur. 

Ma version de capistrano est 3.1.0, celle de Rails est 4.1.4 ..__ Mais mon collègue n'a pas ce problème. J'essaie de changer ma version de Ruby, version de rvm identique à la configuration de mon collègue. Cela ne fonctionne toujours pas ... Je tente donc de lister toutes ces pierres précieuses. J'ai trouvé mon sshkit est plus élevé que le sien.

Donc, je rétrograde mon sshkit à 1.7.1. 

Alors ça marche.

1
TsaiKoga