Ich habe ein wirklich frustrierendes Problem: Rake ist dumm.
So entsteht das Problem:
$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
Beide funktionieren gut, aber wenn ich das mache,
$ rake db:migrate
Ich erhalte den folgenden Fehler.
(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>'
Ich habe im Internet nach ähnlichen / gleichen Fehlern gesucht, und die Leute haben sie gehabt. Nur scheint niemand jemals das Problem zu lösen!
Wie behebe ich dieses Problem?
ruby-on-rails
rake
HRÓÐÓLFR
quelle
quelle
bundle update rake
zuerst tun . Dann habe ich nachgefragtbundle show rake
. Es sollte 0.8.7 sagen. Dannrake db:migrate
.gem "rake", "!= 0.9.0"
. Dies vermeidet die fehlerhafte Version 0.9.0, wird jedoch auf eine neuere Version aktualisiert, sobald eine neuere Version veröffentlicht wird (das spätere Entfernen wird nicht schaden, aber das Beibehalten sollte auch nicht schaden).heroku rake db:migrate
und dies schien es zu beheben.sudo gem install rake
sicherstellen, dass dierake
Version, die ich über die Befehlszeile aufrief, nicht 0.8.7 war.Ich habe kurz nach meiner vorherigen Antwort einige Nachforschungen angestellt (Entschuldigung, ich muss es vorher tun).
Alle Probleme werden mit Rake Gem 0.9.2 gelöst. Ich habe die folgenden Schritte ausgeführt:
gem install rake -v=0.9.2
(ich hatte das Juwel 0.9.1)gem uninstall rake -v=0.9.1
bundle update
dann
db:migrate
zeigte das eine Warnung,WARNING: Global access to Rake DSL methods is deprecated. Please....
Es wurde gelöst, indem der Rake-Datei Folgendes hinzugefügt wurde.
Ich habe die
module ::RakeFileUtils extend Rake::FileUtilsExtend
von @databyte vorgeschlagene Option weggelassen.Dies bedeutet, dass der Rake-Edelstein 0.9.2 gut funktioniert!
quelle
RakeFile
sollte, bevorrequire 'rake'
- erwischte mich :)gem uninstall rake -v=0.9.2
2)gem install rake -v=0.9.2
Ich habe Kapitel 2 von Railstutorial (demo_app) durchgesehen und bin auf dieses Problem gestoßen. Ich habe alle anderen hier aufgeführten Antworten ausprobiert, konnte sie aber erst zum Laufen bringen:
Fügen Sie dies in Ihr Rakefile oben ein und benötigen Sie 'Rake':
via Wie behebt man das nicht initialisierte konstante Rake :: DSL-Problem auf Heroku?
Ich habe auch alle Dateien erneut festgelegt und an Github und Heroku gesendet.
quelle
Alles was ich tun musste war zu benutzen:
Ich hatte bereits Version 0.9.2, musste nur installiert werden.
quelle
Installieren Sie den Rechen-Edelstein neu und es sollte gut funktionieren:
Wenn nicht, geben Sie die Version '0.8.7' in Ihrer Gemfile an.
quelle
Wenn Sie Bundler nicht verwenden:
Dann deinstallieren Sie 0.9.0.
quelle
Wenn Sie wie ich auf Rake 0.8.7 stecken bleiben und Rails 3.2.x verwenden, fügt railties eine Anforderung für Rake :: DSL hinzu
Um dies zu lösen, sollten Sie oben in Ihrem Rakefile Folgendes hinzufügen:
quelle
Ich habe das gleiche Problem mit den folgenden Schritten gelöst:
In Gemfile:
Dann lief dies auf der Konsole:
Fügen Sie dann die folgenden Zeilen zu Rakefile hinzu:
quelle
Rails 3.1.rc1 wurde aktualisiert. Für Ihre eigenen Rakefiles können Sie diese vor dem Aufruf von load_tasks hinzufügen.
https://gist.github.com/4cd2bbe68f98f2f0249f
UPDATE: Es wurde auch bemerkt, dass es auch hier bereits beantwortet wurde: Undefinierte Methode 'task' mit Rake 0.9.0
quelle
Ich hatte das gleiche Problem und musste den Rake 0.8.7 Edelstein anstelle von 0.9.0 verwenden.
quelle
Ich bin ein Windows XP-Benutzer und hatte das gleiche Problem.
Ich habe gem "rake", "0.8.7" in die gemfile eingegeben und dann im Befehlsfenster Folgendes eingegeben.
Dies hat mein Problem behoben.
quelle
bundle install --path=vendor/bundle
bundle exec rake db:migrate
Um den Servertyp zu starten
bundle exec rails s
. Verwenden Sie Bundle Exec und Sie werden sicher sein, dass Sie die richtigen Edelsteine (erforderliche Version) für Ihr Projekt verwenden. Außerdem würde ich empfehlen, dass Sie hinzufügenvendor/bundle
,.gitignore
wenn Siegit
Alias für verwenden und erstellenbundle exec
. Wenn Sie verwendenzsh
, können Sie diesem Ansatz folgenquelle
Gleich wie Branstar oben - danke Branstar!
Ich habe die Anweisungen in Running Rails 3 unter Windows befolgt .
Alles hat bis zum Teil "rake db: migrate" funktioniert, der mir die gleiche Ausgabe wie der ursprüngliche Beitrag lieferte.
Ich rannte:
Ich rannte wieder:
Dann konnte ich den Ruby on Rails-Server starten und hatte alles an Ort und Stelle.
Nochmals vielen Dank Branstar :-)
quelle
Ich fühle für dich (mikhailvs), es ist wirklich frustrierend. Ich bin seit fast einem ganzen Tag verrückt geworden. Ich habe sogar Ruby und alle seine abhängigen Dateien deinstalliert und meinen PC heruntergefahren, aber ich habe immer noch das gleiche Problem.
Was ich aus der Fehlermeldung erhalten habe, ist das Problem mit Rake 0.9.2. Es scheint, als wäre es nicht vollständig installiert. Also musste ich neu installieren
gem install rake -v=0.9.2
Ich war mir nicht sicher, ob ich Rake –v0.9.1 installiert habe. Um sicherzugehen, dass ich in Sicherheit bin, habe ich versucht, diese alte Version mit zu entfernen
gem uninstall rake -v=0.9.1
. Aber mir wird die Fehlermeldung angezeigtOK, also habe ich alle Rake-Verzeichnisse auf meinem PC überprüft und festgestellt, dass ich nur Rake 0.9.2 hatte. Um zu überprüfen, ob alles in Ordnung war, bin ich mit migriert
rake db:migrate
. Und es hat funktioniert :)Ich glaube, ich hatte Rake 0.9.1 nicht, weil ich Ruby ( rubyinstaller-1.9.2-p180 - auf meinem Windows 7-System) und alle Edelsteine neu installiert habe . In der Zwischenzeit war Rake 0.9.2 nicht vollständig installiert.
quelle
Die Deinstallation mit "gem uninstall rake" hat bei mir funktioniert. Ich hatte 2 Versionen installiert, also habe ich eine saubere Neuinstallation durchgeführt.
"rake db: create" , um sicherzustellen, dass die Datenbank vorhanden ist, und dann "rake db: migrate" , um den Deal zu besiegeln.
quelle
Ich hatte das gleiche Problem mit Rake 0.9.2.2. Ich habe dieses Problem mit Bundle Exec gelöst.
quelle
Für Rails 2.3
lib/tasks/rspec.rake
funktionierte die Bearbeitung wie in diesem Commit für mich:https://github.com/dchelimsky/rspec-rails/pull/11/files
quelle
Installieren Sie Rake 0.8.7 und deinstallieren Sie 0.9.2.2
Jetzt benutzen
ich denke das wird dir helfen;)
quelle
Lauf
Für mich geht das.
quelle