Je viens de mettre à jour Rake vers la dernière version ( 0.9.0.beta.4
) et la rake
commande se termine par le message d'erreur suivant:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Voici la trace:
undefined method `task' for #<Anelis::Application:0x97ef80c>
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
/home/amokrane/Documents/prog/web/learning_rails/anelis/Rakefile:7:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `eval'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:16:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:495:in `raw_load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:78:in `block in load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:77:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:61:in `block in run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:59:in `run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/bin/rake:31:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'
Quelqu'un a-t-il rencontré le même problème? Qu'est-ce qui pourrait être faux? Notez que je cours Rails 3.0.3
, vous pouvez également être intéressé par le contenu de mon Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql2'
gem 'legacy_data'
gem 'resources_controller', :git => 'git://github.com/ianwhite/resources_controller'
gem 'will_paginate', '3.0.pre' # pagination
gem 'jquery-rails', '>= 0.2.6'
gem "rmagick" # sudo aptitude install libmagick9-dev
gem "paperclip", "~> 2.3"
gem "nested_form", :git => "git://github.com/madebydna/nested_form.git"
gem "meta_search"
gem "hirb"
gem "devise"
gem "rails_admin", :git => "git://github.com/sferik/rails_admin.git"
Comment puis-je résoudre ce problème?
ruby-on-rails-3
rake
Amokrane Chentir
la source
la source
Réponses:
J'ai eu la même exception lors de l'exécution de la version 0.9.0.beta.4 de Rake. Il semble que le nouveau
Rake::DSL
ne soit pas chargé correctement.J'ai donc ajouté le code suivant à mon Rakefile:
De cette façon, j'ai pu exécuter à nouveau mes tâches Rake.
Je sais que ce n’est pas une solution élégante. Mais si vous devez utiliser la
--pre
version de Rake, vous pouvez utiliser ce hack rapide.la source
require 'rake'
etMyApp::Application.load_tasks
Comme expliqué dans la réponse de mordaroso , il y a un problème dans Rake 0.9.0. Vous devez temporairement rétrograder Rake pour l'éviter:
run:
gem uninstall rake -v 0.9
(ajoutezsudo
sauf si vous utilisezrvm
)ajoutez à votre Gemfile:
gem 'rake', '~> 0.8.7'
puis exécutez:
bundle update
Vous pouvez ignorer la première étape, mais vous devez ensuite exécuter en
rake
utilisantbundle exec
, par exemple:Sinon, vous obtenez l'erreur suivante.
Mettre à jour
Comme Alex Chaffee l'a remarqué dans un commentaire pour la réponse de Pablo Cantero , vous devrez peut-être faire ce qui suit pour désinstaller Rake si vous voyez toujours le problème
Essayez également la solution suggérée dans la réponse de Duke .
la source
bundle exec rake
pour utiliser la version fournie de travail.bundle exec rake
n'est nécessaire que si rake-0.9 n'a pas été désinstallé. Dans ce cas, on obtient un message d'erreurrake aborted! You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
gem 'rake', '~> 0.8.7'
Remarque: ce problème vient d'être corrigé dans Rails 3.0.8
La nouvelle version de Rake ne place plus ses commandes DSL (tâche, fichier, desc, import, etc.) à la racine de l'espace de noms Object (les placer dans Object signifiait que chaque objet avait une commande de tâche, pas très agréable. Le DSL Les commandes sont disponibles en mélangeant
Rake::DSL module
dans n'importe quel module nécessitant les commandes.Jusqu'à ce que Ruby on Rails soit mis à jour pour fonctionner avec Rake 0.9.x, placez ce qui suit dans votre projet Rakefile après "require rake" et avant l'appel à
Application.load_tasks
:la source
J'ai créé un problème pour rails_admin à propos de cette même erreur.
La réponse :
C'est un problème dans Rake (0.9.0), il a été annoncé par DHH sur Twitter.
la source
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(la deuxième installation consiste à récupérer l'exécutable).rvm use @global && gem uninstall rake --version 0.9.0 && rvm use @ && gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
Cela a été corrigé dans Ruby on Rails 3.0.8.rc1 qui devrait être publié dans quelques jours.
la source
Rake 0.9.1 vient d'être publié, ce qui annule le changement qui a causé cette erreur mais ajoute un avertissement d'obsolescence: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
la source
J'utilise rvm, mais la désinstallation ne m'aide pas. Je supprime donc manuellement tous les fichiers 0.9 du
.rvm/gems/ruby@global
répertoire et tout redevient comme avant!la source
sans avoir besoin de désinstaller Rake 0.9.x, ajoutez
à votre Gemfile et tapez simplement
la source