Właśnie zaktualizowałem Rake do najnowszej wersji ( 0.9.0.beta.4
) i rake
polecenie kończy się następującym komunikatem o błędzie:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Oto ślad:
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>'
Czy ktoś napotkał ten sam problem? Co może być nie tak? Zwróć uwagę, że korzystam Rails 3.0.3
, możesz być także zainteresowany zawartością mojego pliku 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"
Jak mogę rozwiązać ten problem?
ruby-on-rails-3
rake
Amokrane Chentir
źródło
źródło
Odpowiedzi:
Miałem ten sam wyjątek podczas uruchamiania wersji 0.9.0.beta.4 programu Rake. Wygląda na to, że nowy
Rake::DSL
nie jest poprawnie załadowany.Więc dodałem następujący kod do mojego Rakefile:
W ten sposób mogłem ponownie uruchomić moje zadania Rake.
Wiem, że to nie jest eleganckie rozwiązanie. Ale jeśli musisz użyć
--pre
wersji Rake, możesz skorzystać z tego szybkiego hacka.źródło
require 'rake'
aMyApp::Application.load_tasks
Jak wyjaśniono w odpowiedzi mordaroso , w Rake 0.9.0 jest problem. Aby tego uniknąć, musisz tymczasowo obniżyć Rake:
run:
gem uninstall rake -v 0.9
(dodaj,sudo
chyba że używaszrvm
)dodaj do swojego Gemfile:
gem 'rake', '~> 0.8.7'
a następnie uruchom:
bundle update
Możesz pominąć pierwszy krok, ale wtedy musisz biec
rake
używającbundle exec
np .:W przeciwnym razie pojawi się następujący błąd.
Aktualizacja
Jak zauważył Alex Chaffee w komentarzu do odpowiedzi Pablo Cantero , być może będziesz musiał wykonać następujące czynności, aby odinstalować Rake, jeśli nadal widzisz problem
Wypróbuj także rozwiązanie sugerowane w odpowiedzi Duke'a .
źródło
bundle exec rake
aby użyć działającej wersji pakietu.bundle exec rake
jest potrzebny tylko wtedy, gdy rake-0.9 nie został odinstalowany. W tym przypadku pojawia się komunikat o błędzierake 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'
Uwaga: zostało to właśnie naprawione w Railsach 3.0.8
Nowa wersja Rake nie umieszcza już swoich poleceń DSL (task, file, desc, import, itp.) W katalogu głównym przestrzeni nazw Object (umieszczenie ich w Object oznaczało, że każdy obiekt ma polecenie zadania, niezbyt ładne. DSL polecenia są dostępne poprzez dodanie
Rake::DSL module
do dowolnego modułu wymagającego poleceń.Dopóki Ruby on Rails nie zostanie zaktualizowany do pracy z Rake 0.9.x, umieść w swoim projekcie Rakefile następujący kod po „require rake”, a przed wywołaniem
Application.load_tasks
:źródło
Utworzyłem problem dla rails_admin dotyczący tego samego błędu.
Odpowiedź :
To problem w Rake (0.9.0), poinformował o tym DHH na Twitterze.
źródło
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(druga instalacja to odzyskanie pliku wykonywalnego).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
Zostało to naprawione w Ruby on Rails 3.0.8.rc1, który powinien zostać wydany za kilka dni.
źródło
Właśnie wydano Rake 0.9.1, który cofa zmianę, która spowodowała ten błąd, ale dodaje ostrzeżenie o wycofaniu: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
źródło
Używam rvm, ale odinstalowanie mi nie pomaga. Więc ręcznie usuwam wszystkie pliki 0.9 z
.rvm/gems/ruby@global
katalogu i wszystko wygląda jak wcześniej!źródło
bez konieczności odinstalowywania Rake 0.9.x, dodaj
do swojego Gemfile i po prostu wpisz
źródło