132 votes

Méthode l’indéfini ' spéciale ' à l’aide de râteau 0.9.0

Je viens de mettre à jour le Râteau à la dernière version (0.9.0.beta.4) et l' rake commande se termine avec le message d'erreur suivant:

rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>

Ici, c'est 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>'

Personne n'a connu le même problème? Que pourrait-il être mauvais? Notez que je suis en cours d'exécution Rails 3.0.3, vous pourriez é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?

158voto

Andrei Points 3689

Comme expliqué dans mordaroso de réponse, il y a un problème dans Râteau 0.9.0. Vous avez besoin temporairement de rétrograder Râteau pour l'éviter:

  1. exécution: gem uninstall rake -v 0.9 (ajoutez - sudo , sauf si vous utilisez rvm)

  2. ajouter à votre Gemfile: gem 'rake', '~> 0.8.7'

  3. et de lancer: bundle update

Vous pouvez sauter la première étape, mais alors vous devez exécuter rake l'aide bundle exec, par exemple:

bundle exec rake db:migrate

Sinon, vous obtenez l'erreur suivante.

rake aborted!
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.

Mise à jour

Comme Alex Chaffee remarqué dans un commentaire pour Pablo Cantero, en réponse, que vous pourriez avoir besoin pour effectuer les opérations suivantes pour désinstaller Râteau si vous voyez toujours le problème

rvm use @global && gem uninstall rake -v 0.9.0
rvm use @       && gem uninstall rake -v 0.9.0

Aussi essayer la solution proposée dans Duc de réponse.

119voto

mordaroso Points 1335

J’ai eu la même exception lorsque vous exécutez la version 0.9.0.beta.4 de râteau. Il ressemble à la nouvelle `` n’est pas chargé correctement.

J’ai donc ajouté code suivant à mon Rakefile :

Comme ça j’ai été en mesure d’exécuter mes tâches de râteau à nouveau.

Je sais que ce n’est pas une solution élégante. Mais si vous devez utiliser le `` version du râteau, il serait bien d’utiliser ce hack rapide.

40voto

Duke Points 2752

Remarque: Ce n'était qu'fixe dans les Rails 3.0.8

La nouvelle version de Râteau ne met pas sa DSL commandes (tâche, fichier, desc, l'importation, etc.) dans la racine de l'Objet de l'espace de noms plus (en les plaçant dans l'Objet signifié chaque objet a une tâche de commande, pas très agréable. Le DSL de commandes sont disponibles en mélangeant dans l' Rake::DSL module dans n'importe quel module nécessitant les commandes.

Jusqu'à ce que Ruby on Rails est mis à jour pour fonctionner avec le Râteau de 0,9.x, placez le code suivant dans votre projet Rakefile après "besoin de râteau" et avant l'appel à l' Application.load_tasks:

class Rails::Application
  include Rake::DSL if defined?(Rake::DSL)
end

16voto

Pablo Cantero Points 2746

J'ai créé un problème pour rails_admin sur ce même message d'erreur.

La réponse:

C'est un général Rails problème: http://twitter.com/dhh/status/71966528744071169

Il devrait y avoir une version 3.0.8 bientôt qu'il fixe. Dans le même temps, vous pouvez ajouter la ligne suivante à votre Gemfile:

gem 'râteau', '~> 0.8.7'

C'est un problème de Rake (0.9.0), il a été annoncé par le DHP sur Twitter.

Râteau de 0,9, qui a été publié hier, a brisé les Rails (et d'autres). En attendant un correctif, vous aurez envie gem 'râteau', '0.8.7' dans votre Gemfile.

7voto

Andrew Nesbitt Points 3292

Cela a été corrigé dans Ruby on Rails 3.0.8.rc1 qui devrait être publié dans quelques jours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X