webentwicklung-frage-antwort-db.com.de

Der globale Zugriff auf Rake DSL-Methoden ist veraltet

Ich arbeite das Ruby on Rails 3 Tutorial Book durch und tippe folgendes in die Kommandozeile:

rake db:migrate

welches die folgende Warnung erzeugte.

WARNING: Global access to Rake DSL methods is deprecated.  Please Include
    ...  Rake::DSL into classes and modules which use the Rake DSL methods.

WARNING: DSL method DemoApp::Application#task called at /Users/iMac/.rvm/gems/[email protected]/gems/railties-3.0.7/lib/Rails/application.rb:215:in `initialize_tasks'

Ich bin nicht sicher, was ich dagegen tun soll oder wie ich damit arbeiten soll. Ich kenne keinen anderen Befehl für Rake.

Wie kann ich dieses Problem beheben?

86
chell

Ich fand dies in der Stapelüberlauf-Frage Ruby on Rails und Rake-Probleme: nicht initialisierte Konstante Rake :: DSL. Es bezieht sich auf ein @ DHH Tweet.

Fügen Sie Folgendes in Ihre Gemfile ein

gem "rake", "0.8.7"

Sie können so etwas sehen

rake aborted!
You have already activated Rake 0.9.1 ...

Ich hatte noch eine Kopie von Rake 0.9.1 in meinem Verzeichnis, also habe ich sie gelöscht.

Sie können Rake 0.9.1 "löschen", indem Sie den folgenden Befehl ausführen:

gem uninstall rake -v=0.9.1

Wenn Sie mehrere Versionen des Gems installiert haben, werden Sie aufgefordert, eine Version auszuwählen.

Nachdem 0.9.1 bereinigt war, lief ich

bundle update rake

und konnte endlich meine Datenbankdateien erstellen. Ich benutzte rake db:create, aber es sollte funktionieren für rake db:migrate auch.

Ich hoffe, es hilft.

64
Brian Bruijn

Das Hinzufügen von include Rake::DSL Zum Rakefile, bevor die Anwendungen load_tasks aufgerufen wurden, hat auch für mich funktioniert.

Also im obigen Fall des Benutzers vor dem DemoApp::Application.load_tasks Im Rakefile.

111
Patelify

Ich hatte unter Windows das gleiche Problem mit dem Installationsprogramm. Ruby 1.9.2 und Rails 3.0.9. Hier ist, was ich getan habe:

bundle update rake
bundle show rake

Danach lief ich mit Rake 0.9.2.

Dann habe ich das Rakefile im Anwendungsstammordner wie folgt aktualisiert:

require File.expand_path('../config/application', __FILE__)
require 'rake'
# If you named your application something other than SampleApp, change that below
module ::SampleApp
    class Application
        include Rake::DSL
    end
end

module ::RakeFileUtils
    extend Rake::FileUtilsExt
end

SampleApp::Application.load_tasks

Stellen Sie, wie im Kommentar angegeben, sicher, dass der Name Ihrer App in den beiden entsprechenden Zeilen oben korrekt ist.

5
LikeMaBell

bundle exec rake db: migrate löst Ihre Ruby Versionsprobleme

0
Galuga

Wenn Sie dies in späteren Versionen von Rails (wie 3. +) sehen, können Sie auch mithilfe von RVM http://beginrescueend.com) überprüfen, ob Ihre Umgebung sauber ist / und ein spezielles Ruby & Gemset für Ihre Projekte erstellen.

Verwenden Sie eine .rvmrc-Datei für jedes Projekt. Dadurch wird sichergestellt, dass Sie keine älteren System-Gems in Ihre Projekte integrieren. Welches hat mich schon mal gebissen.

Dies verhindert, dass man mit generierten Rakefiles & so herumalbern muss.

0
Jim Munro