web-dev-qa-db-fra.com

ERREUR: 'rake / rdoctask' est obsolète et n'est plus pris en charge. Utilisez plutôt 'rdoc / task' (disponible dans RDoc 2.4.2+)

Il semble que le dernier message pour ce problème a été fermé pour une raison ou une autre, alors je vais tenter ma chance ...

J'essaye d'exécuter une simple commande "rake db: migrate". Quand je le fais, j'obtiens l'erreur dans le titre. Oui, la solution "semble" évidente mais ce n'est pas parce que je ne sais pas que mon Rakefile ne contient aucune référence à 'rake/rdoctask'. Il semble provenir de documentation.rake mais lorsque j'essaie de modifier ce fichier comme recommandé par l'erreur, j'obtiens une erreur différente. J'ai trouvé quelques messages déclarant qu'il s'agit d'un problème connu, mais rien de ce que j'ai trouvé n'indique comment résoudre ou contourner ce problème.

Quelqu'un a-t-il des idées pour le réparer? Voici la sortie de la commande rake avec un --trace:

$ rake --trace db:migrate
rake aborted!
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rdoctask.rb:1:in `<top (required)>'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/tasks/documentation.rake:2:in `require'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/tasks/documentation.rake:2:in `<top (required)>'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/tasks.rb:15:in `load'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/tasks.rb:15:in `block in <top (required)>'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/tasks.rb:6:in `each'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/tasks.rb:6:in `<top (required)>'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/application.rb:213:in `require'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/application.rb:213:in `initialize_tasks'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/application.rb:139:in `load_tasks'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/application.rb:77:in `method_missing'
    C:/developer/skknobara/Rakefile:7:in `<top (required)>'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rake_module.rb:25:in `load'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rake_module.rb:25:in `load_rakefile'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:583:in `raw_load_rakefile'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:89:in `block in load_rakefile'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:88:in `load_rakefile'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:72:in `block in run'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:70:in `run'
    C:/Programs/Ruby193/lib/Ruby/gems/1.9.1/gems/rake-10.0.3/bin/rake:33:in `<top (required)>'
    C:/Programs/Ruby193/bin/rake:23:in `load'
    C:/Programs/Ruby193/bin/rake:23:in `<main>'

J'ai découvert que j'avais Rails 3.0.3 dans mon Gemfile donc je l'ai changé en 3.2.9, mais maintenant quand je lance rake db: migrate j'obtiens:

rake aborted!
Bundler could not find compatible versions for gem "rack":
  In Gemfile:
    Rails (= 3.2.9) x86-mingw32 depends on
      rack (~> 1.4.0) x86-mingw32

    rack (1.2.5)

Je ne sais pas ce que signifie l'erreur, mais "rack de liste de gemmes" montre que j'ai installé 1.4.1 et 1.4.0. Mon Gemfile est assez simple:

gem 'Rails', '3.2.9'
gem 'rack','< 1.4.1'
gem 'mysql2', '< 0.3'

Des pensées?

36
DaveR

J'ai eu un problème similaire en utilisant Rails 2.3.5, donc comme indiqué dans le message de trace, j'ai modifié le fichier râteau pour exiger "rdoc/task" au lieu de rake/rdoctask et installé rdoc gem.

Si vous utilisez la version rake> 10.0.0. veuillez modifier votre Rakefile

de:

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/Rails'

à:

require 'rake'
require 'rake/testtask'
require 'rdoc/task'
require 'tasks/Rails'

Si vous ne voulez pas éditer le Rakefile, vous pouvez revenir à l'ancienne version de take comme ceci

gem uninstall rake -v 10.0.3
gem install rake -v 0.8.7
62
Giridhar Bandi

J'ai rencontré un problème similaire lors de la migration de mon ancienne application vers Rails 2.3.15. Je l'ai résolu en installant une ancienne version de rake et en désinstallant la version 10.0.3 actuelle:

gem install rake --version 0.8.7
gem uninstall rake --version 10.0.3
22
danijel

Je l'ai fait fonctionner en mettant

gemme "râteau", "0.9.2.2"

dans mon Gemfile puis en exécutant le râteau comme

bundle exec rake db:migrate
7
James Testa

J'ai dû résoudre ce problème tout en ne cassant pas sur les endroits qui ont un vieux râteau mais pas rdoc installé. J'ai ajouté une clause begin ... rescue:

begin
  require 'rake/rdoctask'
rescue
  require 'rdoc/task'
end
6
Benjamin Atkin

Je suis tombé sur le même problème ... j'ai fait quoi GiridharBandi mentionné ci-dessus:

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/Rails'

à:

require 'rake'
require 'rake/testtask'
require 'rdoc/task'
require 'tasks/Rails'

La version 10.0.4 de Rake était là dans la liste des gemmes mais quand j'ai essayé de désinstaller, elle a dit que Rake n'était pas installé. J'ai donc ignoré cela et j'ai installé le rake 0.8.7. Une fois installé, j'ai installé rdoc

gem install rdoc

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

et puis tout a commencé à bien fonctionner.

Pour Rails 3.0.6, avec le même type d'erreur:

ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.

J'ai installé rake 0.9.2 et aussi rdoc. a commenté les "tâches/rails" #require, puis tout a commencé à fonctionner. Je pense que le problème de râteau est résolu dans Rails> 3.2.9.

6
JstRoRR

J'ai eu un problème similaire récemment.

Ressemble au même problème que: Impossible d'exécuter une commande de râteau: "ERREUR: 'rake/rdoctask' est obsolète et n'est plus pris en charge"

Je l'ai résolu en passant à Rails 3.2.9.

2
markussvensson

Oh mon dieu, je réfléchissais à cela pendant près d'une heure et enfin voici mon cas (peut aider quelqu'un :)): Je me suis installé plusieurs Rails versions installées donc j'ai juste désinstallé la dernière comme Je veux utiliser le plus énervé (le 4.0.1 pour l'instant)

alors :

$ gem uninstall Rails

et j'ai obtenu ceci:

Select gem to uninstall:
 1. Rails-0.9.5
 2. Rails-4.0.0
 3. Rails-4.0.1
 4. All versions
>

j'ai donc sélectionné les deux premiers et c'était tout :) maintenant tout va bien j'espère que cela aide quelqu'un qui s'est mystérieusement coincé comme moi :(

1
Redrick

Ce n'est probablement pas la bonne façon de le faire, mais je suis allé dans mon fichier Gemfile.lock et j'ai changé ma version de râteau de 10.0.3 à 0.8.7. J'exécute Rails 3.0.5 en ce moment, et j'avais brièvement mis à jour vers 3.0.19 avant de revenir en arrière. Je pense que cela a mis à jour certaines gemmes et a également fait en sorte que le Rails gem cherchait la dernière version supérieure ou égale à 0.8.7:

Rails (3.0.5)
  actionmailer (= 3.0.5)
  actionpack (= 3.0.5)
  activerecord (= 3.0.5)
  activeresource (= 3.0.5)
  activesupport (= 3.0.5)
  bundler (~> 1.0)
  railties (= 3.0.5)
railties (3.0.5)
  actionpack (= 3.0.5)
  activesupport (= 3.0.5)
  rake (>= 0.8.7)
  thor (~> 0.14.4)
rake (0.8.7)

J'ai également désinstallé 10.0.3:

gem uninstall rake --version 10.0.3

Après cela, tout recommence à fonctionner comme il se doit.

Si je n'avais pas annulé Rails 3.0.19, alors j'aurais continué à utiliser le rake 10.0.3.

J'espère que cela aide quelqu'un!

1
aferris

Je rencontre cela chaque fois que j'ai un projet basé sur Bundler et j'utilise Ruby 1.9 . 2 . Finalement, je comprends que Bundler ne gère pas la gem rdoc, et tout ce que j'ai à faire pour résoudre le problème est d'inclure rdoc dans le Gemfile (ou le gemspec si Gemfile est déjà configuré pour l'utiliser) et courir bundle install.

Je ne semble jamais rencontrer cela avec 1.9.3 ou 2.0.0, seulement 1.9.2.

1
L2G

Comme l'affiche originale, je n'ai pas besoin de rake/rdoctask. Mettre à jour mon Rails n'est pas une option. La réponse est de garder votre rake à 0.9.2.2 dans votre Gemfile.

1
mcr