Ich habe Rake gerade auf die neueste Version ( 0.9.0.beta.4
) aktualisiert und der rake
Befehl endet mit der folgenden Fehlermeldung:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Hier ist die Spur:
undefined method `task' for #<Anelis::Application:0x97ef80c>
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
/home/amokrane/Documents/prog/web/learning_rails/anelis/Rakefile:7:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `eval'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:16:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:495:in `raw_load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:78:in `block in load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:77:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:61:in `block in run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:59:in `run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/bin/rake:31:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'
Hat jemand das gleiche Problem erlebt? Was könnte möglicherweise falsch sein? Beachten Sie, dass ich Rails 3.0.3
laufe. Möglicherweise interessieren Sie sich auch für den Inhalt meiner Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql2'
gem 'legacy_data'
gem 'resources_controller', :git => 'git://github.com/ianwhite/resources_controller'
gem 'will_paginate', '3.0.pre' # pagination
gem 'jquery-rails', '>= 0.2.6'
gem "rmagick" # sudo aptitude install libmagick9-dev
gem "paperclip", "~> 2.3"
gem "nested_form", :git => "git://github.com/madebydna/nested_form.git"
gem "meta_search"
gem "hirb"
gem "devise"
gem "rails_admin", :git => "git://github.com/sferik/rails_admin.git"
Wie kann ich dieses Problem beheben?
ruby-on-rails-3
rake
Amokrane Chentir
quelle
quelle
Antworten:
Ich hatte die gleiche Ausnahme beim Ausführen der Version 0.9.0.beta.4 von Rake. Es sieht aus wie das neue
Rake::DSL
nicht richtig geladen ist.Also habe ich meinem Rakefile folgenden Code hinzugefügt:
Auf diese Weise konnte ich meine Rake-Aufgaben erneut ausführen.
Ich weiß, dass dies keine elegante Lösung ist. Wenn Sie jedoch die
--pre
Version von Rake verwenden müssen, ist es möglicherweise in Ordnung, diesen schnellen Hack zu verwenden.quelle
require 'rake'
undMyApp::Application.load_tasks
Wie in der Antwort von Mordaroso erläutert , gibt es in Rake 0.9.0 ein Problem. Sie müssen Rake vorübergehend herabstufen, um dies zu vermeiden:
run:
gem uninstall rake -v 0.9
(hinzufügen,sudo
sofern Sie nicht verwendenrvm
)füge deinem Gemfile hinzu:
gem 'rake', '~> 0.8.7'
und dann ausführen:
bundle update
Sie können den ersten Schritt überspringen , aber dann müssen Sie laufen
rake
mitbundle exec
, zum Beispiel:Andernfalls wird der folgende Fehler angezeigt.
Aktualisieren
Wie Alex Chaffee in einem Kommentar zu Pablo Canteros Antwort bemerkte , müssen Sie möglicherweise Folgendes tun, um Rake zu deinstallieren, wenn das Problem weiterhin auftritt
Versuchen Sie auch die in Dukes Antwort vorgeschlagene Lösung .
quelle
bundle exec rake
, um die funktionierende gebündelte Version zu verwenden.bundle exec rake
wird nur benötigt, wenn rake -0.9 nicht deinstalliert wurde. In diesem Fall erhält man eine Fehlermeldungrake aborted! You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
gem 'rake', '~> 0.8.7'
Hinweis: Dies wurde gerade in Rails 3.0.8 behoben
Die neue Version von Rake legt ihre DSL-Befehle (Task, Datei, Desc, Import usw.) nicht mehr im Stammverzeichnis des Objekt-Namespace ab (das Platzieren in Object bedeutet, dass jedes Objekt einen Task-Befehl hat, der nicht sehr schön ist. Das DSL Befehle sind durch Einmischen der
Rake::DSL module
in ein beliebiges Modul , das die Befehle benötigt.Fügen Sie bis zur Aktualisierung von Ruby on Rails für Rake 0.9.x Folgendes in Ihr Projekt-Rakefile nach "Rake erforderlich" und vor dem Aufruf von ein
Application.load_tasks
:quelle
Ich habe für rails_admin ein Problem mit demselben Fehler erstellt.
Die Antwort :
Es ist ein Problem in Rake (0.9.0), das DHH auf Twitter angekündigt hat .
quelle
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(die zweite Installation besteht darin, die ausführbare Datei zurückzubekommen).rvm use @global && gem uninstall rake --version 0.9.0 && rvm use @ && gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
Dies wurde in Ruby on Rails 3.0.8.rc1 behoben , das in wenigen Tagen veröffentlicht werden sollte.
quelle
Rake 0.9.1 wurde gerade veröffentlicht, wodurch die Änderung, die diesen Fehler verursacht hat, rückgängig gemacht wird, aber eine Verfallswarnung hinzugefügt wird: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
quelle
Ich benutze rvm, aber die Deinstallation hilft mir nicht. Also entferne ich manuell alle 0.9 Dateien aus dem
.rvm/gems/ruby@global
Verzeichnis und alles wird wie zuvor!quelle
Fügen Sie hinzu, ohne Rake 0.9.x deinstallieren zu müssen
zu deinem Gemfile und tippe einfach
quelle