J'ai un problème vraiment frustrant: Rake est stupide.
Voici comment le problème survient:
$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
Les deux fonctionnent très bien, mais quand je fais cela,
$ 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 cherché sur Internet des erreurs similaires / identiques, et les gens les ont eues. Personne ne semble jamais résoudre le problème!
Comment résoudre ce problème?
ruby-on-rails
rake
HRÓÐÓLFR
la source
la source
bundle update rake
premier. Puis j'ai vérifié avecbundle show rake
. Il devrait dire 0.8.7. Alorsrake db:migrate
.gem "rake", "!= 0.9.0"
. Cela évite la version 0.9.0 cassée, mais sera mise à jour vers une version plus récente une fois qu'une version plus récente sera publiée (la supprimer ultérieurement ne fera pas de mal, mais la conserver ne devrait pas non plus faire de mal).heroku rake db:migrate
et cela a semblé le résoudre. n'oubliez pas d'ajouter et de valider ces modifications dans git avant de continuer;)sudo gem install rake
m'assurer que larake
version que j'appelais depuis la ligne de commande n'était pas la 0.8.7.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 Rake gem 0.9.2 .. J'ai suivi ces étapes:
gem install rake -v=0.9.2
(j'avais la gemme 0.9.1)gem uninstall rake -v=0.9.1
bundle update
puis le
db:migrate
montra un avertissement,WARNING: Global access to Rake DSL methods is deprecated. Please....
Il a été résolu en ajoutant ce qui suit au fichier Rake.
J'ai omis l'
module ::RakeFileUtils extend Rake::FileUtilsExtend
option suggérée par @databyte.Cela signifie que la gemme Rake 0.9.2 fonctionne bien!
la source
RakeFile
devrait être avantrequire 'rake'
- m'a attrapé :)gem uninstall rake -v=0.9.2
2)gem install rake -v=0.9.2
En parcourant le chapitre 2 de Railstutorial (demo_app) et en rencontrant ce problème. J'ai essayé toutes les autres réponses énumérées ici, mais je n'ai pas pu le faire fonctionner avant de faire ceci:
Mettez ceci dans votre Rakefile ci-dessus, nécessite 'rake':
via Comment résoudre le problème constant non initialisé de Rake :: DSL sur Heroku?
J'ai également réengagé et poussé tous les fichiers vers Github et Heroku.
la source
Tout ce que j'avais à faire était d'utiliser:
J'avais déjà la version 0.9.2, juste besoin d'installer.
la source
Réinstallez la gemme de râteau et cela devrait fonctionner correctement:
Sinon, spécifiez la version '0.8.7' dans votre Gemfile.
la source
Si vous n'utilisez pas Bundler:
Ensuite, choisissez de désinstaller 0.9.0.
la source
Si comme moi vous êtes coincé sur rake 0.8.7 et que vous utilisez Rails 3.2.x, alors railties ajoute une exigence pour Rake :: DSL
Pour résoudre ce problème, vous devez ajouter en haut de votre fichier Rake:
la source
J'ai résolu le même problème avec les étapes suivantes:
Dans Gemfile:
Ensuite, exécutez ceci sur la console:
Puis ajouté les lignes suivantes à Rakefile:
la source
Rails 3.1.rc1 a été mis à jour. Pour vos propres Rakefiles, vous pouvez ajouter ceci avant l'appel à load_tasks.
https://gist.github.com/4cd2bbe68f98f2f0249f
MISE À JOUR: A également remarqué qu'il a déjà répondu ici aussi: Méthode non définie 'tâche' utilisant Rake 0.9.0
la source
J'ai eu le même problème et j'ai dû utiliser la gemme rake 0.8.7 au lieu de 0.9.0.
la source
Je suis un utilisateur de Windows XP et j'ai eu le même problème.
J'ai entré gem "rake", "0.8.7" dans le gemfile, puis j'ai tapé ce qui suit dans la fenêtre de commande.
Cela a résolu mon problème.
la source
bundle install --path=vendor/bundle
bundle exec rake db:migrate
Pour démarrer le type de serveur
bundle exec rails s
. Utilisez bundle exec et vous serez sûr d'utiliser les bons gemmes (version requise) pour votre projet. Aussi je vous recommande d'ajoutervendor/bundle
à.gitignore
si vous utilisezgit
et faites aliasbundle exec
. Si vous utilisez,zsh
vous pouvez suivre cette approchela source
Identique à Branstar ci-dessus - merci Branstar!
J'ai suivi les instructions dans Running Rails 3 sur Windows .
Tout a fonctionné jusqu'à la partie "rake db: migrate" qui m'a donné le même résultat que le post original.
L'Iran:
J'ai couru à nouveau:
Ensuite, j'ai pu démarrer le serveur Ruby on Rails et tout était en place.
Merci encore Branstar :-)
la source
Je ressens pour toi (mikhailvs), c'est vraiment frustrant. Je deviens fou depuis presque une journée complète. J'ai même désinstallé Ruby et tous ses fichiers dépendants et j'ai arrêté mon PC, mais j'ai toujours le même problème.
Ce que j'ai obtenu du message d'erreur est le problème avec Rake 0.9.2. Il semble qu'il n'ait pas été complètement installé. J'ai donc dû réinstaller
gem install rake -v=0.9.2
Je n'étais pas sûr d'avoir installé rake –v0.9.1. Donc, pour être sûr que je suis en sécurité, j'ai essayé de supprimer cette ancienne version avec
gem uninstall rake -v=0.9.1
. Mais m'a montré le message d'erreurOK, j'ai donc vérifié tous les répertoires Rake sur mon PC, et j'ai découvert que je n'avais que Rake 0.9.2. Ensuite, pour vérifier si tout s'est bien passé, j'ai migré avec
rake db:migrate
. Et cela a fonctionné :)Je pense que je n'avais pas Rake 0.9.1 parce que j'ai nettoyé Ruby ( rubyinstaller-1.9.2-p180 - sur mon système Windows 7) et toutes les gemmes également. En attendant, Rake 0.9.2 n'était pas complètement installé.
la source
La désinstallation avec "gem uninstall rake" a fonctionné pour moi, j'avais 2 versions installées, donc j'ai plaisanté en faisant une réinstallation propre.
"rake db: create" , pour s'assurer que la base de données existe, puis "rake db: migrate" pour sceller l'accord.
la source
J'ai eu le même problème avec Rake 0.9.2.2. J'ai résolu ce problème en utilisant bundle exec.
la source
Pour Rails 2.3, l'édition
lib/tasks/rspec.rake
comme dans ce commit a fonctionné pour moi:https://github.com/dchelimsky/rspec-rails/pull/11/files
la source
Installez rake 0.8.7 et désinstallez 0.9.2.2
Maintenant, utilisez
Je crois que ceci vous aidera ;)
la source
Courir
ça marche pour moi.
la source