189 votes

Ruby on Rails et de l'inclinaison des problèmes: uninitialized constant Râteau::DSL

Je suis vraiment très frustrant question: Rake est muet.

Voici comment le problème vient à propos:

$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text

Les deux fonctionnent très bien, mais alors quand je le fais,

$ rake db:migrate

J'obtiens l'erreur suivante.

(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'

J'ai regardé sur Internet pour les les mêmes mêmes erreurs, et les gens en ont eu. Seulement personne n'a jamais semble résoudre le problème!

Comment puis-je résoudre ce problème?

193voto

Caley Woods Points 3601

Un tweet de DHP plus tôt. Râteau .9.0 ruptures de Rails et de plusieurs autres choses, vous avez besoin de:

gem "rake", "0.8.7"

dans votre Gemfile.

72voto

Arrumaco Points 735

J'ai fait quelques recherches juste après ma réponse précédente (désolé, je dois le faire avant).

Tous les problèmes sont résolus avec le Râteau gem 0.9.2.. j'ai suivi ces étapes:

  • J'ai installé gem install rake -v=0.9.2 (j'ai eu la 0.9.1 gem)
  • retiré de la 0.9.1 avec gem uninstall rake -v=0.9.1
  • mis à jour avec bundle update
  • puis l' db:migrate ont montré un avertissement, WARNING: Global access to Rake DSL methods is deprecated. Please....

    Il a été résolu en ajoutant ce qui suit à la commission de fichier.

    module ::YourApplicationName  
      class Application
        include Rake::DSL
      end
    end
    
  • J'ai omis l' module ::RakeFileUtils extend Rake::FileUtilsExtend option suggérée par @databyte.

Cela signifie que le Râteau gem 0.9.2 fonctionne très bien!

54voto

djblue2009 Points 931

En passant par le Chapitre 2 de Railstutorial (demo_app) et s'est heurtée à ce problème. J'ai essayé toutes les autres réponses énumérés ici, mais ne pouvais pas le faire fonctionner jusqu'à ce que j'ai fait cela:

Mettez ceci dans votre Rakefile ci-dessus nécessitent des "rake":

require 'rake/dsl_definition'

via Comment résoudre le uninitialized constant Râteau::DSL problème sur Heroku?

J'ai également réitéré son engagement et a poussé tous les fichiers sur Github et Heroku.

25voto

Branstar Points 506

Tout ce que je devais faire était d'utiliser:

gem install rake

J'ai eu la version 0.9.2 déjà, juste besoin de l'installer.

19voto

hohner Points 6745

Réinstaller le râteau gem et il devrait fonctionner:

gem uninstall rake -v=0.9.2 
gem install rake -v=0.9.2

Si non, spécifier la version 0.8.7' dans votre Gemfile.

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