2011-05-20 6 views
17

Gemfile ne contient que les rails 3.0.7 et sqlite3, tout d'un coup rake ne fonctionnera sur aucune application.L'erreur a commencé lors de l'exécution 'rake db: migrate' Trace complète sortie:Rake 0.9.0 'méthode undefined' tâche ''

rake aborted! 
undefined method `task' for #<NotWorking::Application:0x00000100ccc328> 
/Users/codywright/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks' 
/Users/codywright/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks' 
/Users/codywright/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing' 
/Users/codywright/Code/Rails/not_working/Rakefile:7:in `<top (required)>' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/rake_module.rb:25:in `load' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/rake_module.rb:25:in `load_rakefile' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:495:in `raw_load_rakefile' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:78:in `block in load_rakefile' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:77:in `load_rakefile' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:61:in `block in run' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/lib/rake/application.rb:59:in `run' 
/Users/codywright/.rvm/gems/[email protected]/gems/rake-0.9.0/bin/rake:31:in `<top (required)>' 
/Users/codywright/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load' 
/Users/codywright/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>' 
+0

voir ici http://stackoverflow.com/questions/5287121/undefined-method-task-using-rake-0-9-0-beta-4 – Rob

+0

Bonnes nouvelles! Rails 3.0.8.rc1 a résolu ce problème, voir https://github.com/rails/rails/commit/83f257fc4862642af29056cb5b7dfef6e1303754 –

Répondre

8

je l'ai fait: sudo gem uninstall rake -v 0.9 ensuite ajouté gem 'rake', '0.8.7' à mon dossier de pierres précieuses.

0

Run ces 2 lignes à l'invite de commande. Il va supprimer râteau 0.9.0. remplacer votre nom d'utilisateur où il affiche "nom d'utilisateur"

GEM_HOME='/Users/username/.rvm/gems/[email protected] 'GEM_PATH ='/Users/nom d'utilisateur/.rvm/gemmes/[email protected] 'gem uninstall rake

GEM_HOME ='/Utilisateurs/nom d'utilisateur/.rvm/gems/ruby-1.9.2-p180 'GEM_PATH ='/Utilisateurs/nom d'utilisateur/.rvm/gems râteau désinstallation gemme /ruby-1.9.2-p180'

installez ensuite les pierres précieuses correctes:

joyau RVM installer mysql2 -v 0.2.7

joyau RVM installer râteau -v 0.8.7

Mise à jour le joyau MySQL (statment montrer ici pour installer intel x86_64):

env ARCHFLAGS = "- arc x86_64" gem install mysql - --with-mysql -config =/usr/local/mysql/bin/mysql_config

Lorsque vous créez une nouvelle application:

rails nouveau mysql -d

vous ne devriez pas avoir besoin de changer la Gemfile ou utiliser exec bundle

J'espère que cela a du sens. Ce post ne me laissera pas mettre en forme la syntaxe là où elle est lisible.

+0

vous avez essentiellement écrit la même chose que [@Tyler] (http://stackoverflow.com/questions/ 6075997/rake-0-9-0-undefined-method-task/6077849 # 6077849). La différence est qu'il l'a fait en une ligne, et vous avez ajouté des informations non pertinentes. À quoi ça sert? S'il vous plaît, [lire la FAQ] (http://stackoverflow.com/faq) attentivement – Andrei

2

Je suis sur jruby. Voici les commandes exactes qui m'ont permis de me débarrasser du problème.

jruby -S gem uninstall rake 
jruby -S gem install rake -v 0.8.7 

modifier Gemfile: Ajouter cette après gem 'rails':

gem 'rake', '0.8.7' 

exécuter enfin:

jruby -S bundle update rake 
5

Plutôt que rétrogradé rake, vous pouvez fixer votre fichier application.rb par ajouter la ligne:

include Rake::DSL 

Ajoutez juste cela dans la classe Application et vous devriez être bon!

Exemple d'application.rb:

module AppName 
    class Application < Rails::Application 
    include Rake::DSL 
    end 
end 
Questions connexes