Podczas uruchamiania dowolnego rake
zadania otrzymuję:
NoMethodError: undefined method `last_comment 'for
To było po bundle update
czym ściągnąłem nową wersję rake, wersję 11.0.1
.
$ grep rake Gemfile.lock
rake
rake (>= 0.8.7)
rake (11.0.1)
rake
$ bundle update
$ bundle exec rake db:drop # any rake task
NoMethodError: undefined method `last_comment 'for # <Rake :: Application: 0x007ff0cf37be38>
Wersje
- Szyny 3.2.11
- Rake 11.0.1
bundle exec
po zrobieniu tego, jak po prostu nadal używaćrake
bez pakietu exec ??rake db:create:all
zgłasza ten wyjątek.last_comment
, której w bazie kodu nie pamiętam. Nie wiem, czy Rails 4 również wywołujelast_comment
. Ale możesz sprawdzić bazę kodów Rails, przełączyć się do gałęzi Rails 4 i grep dla "last_comment" wRakefile
i*.task
.w Railsach można edytować szybką poprawkę
./Rakefile
(w folderze aplikacji)i dodaj te linie, zanim zadzwonisz
Rails.application.load_tasks
:module TempFixForRakeLastComment def last_comment last_description end end Rake::Application.send :include, TempFixForRakeLastComment
więc całość
Rakefile
może wyglądaćrequire File.expand_path('../config/application', __FILE__) require 'rake' require 'resque/tasks' + # temp fix for NoMethodError: undefined method `last_comment' + # remove when fixed in Rake 11.x + module TempFixForRakeLastComment + def last_comment + last_description + end + end + Rake::Application.send :include, TempFixForRakeLastComment + ### end of temfix + task "resque:preload" => :environment Rails.application.load_tasks
źródło
last_comment
konta zostało cofnięte i zostanie zamiast tego usunięte w rake 12.0.Aktualizacja do najnowszego
Rspec
klejnotu działa:bundle update rspec-rails
źródło
Po prostu ulepsz klejnot
rspec-rails
Teraz:
gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
uściski!
źródło
gem 'rspec-rails', '~> 3.6'
uratował mi życie, wielkie dzięki !! I pomyślałem, że mam w kodzie coś w rodzaju last_comment! LOLJest to problem z prowizją , który został już rozwiązany.
Odpowiedzią @ ekwiwalent8 jest łatka małpy i należy jej unikać.
Jak wskazuje @Kris, jest to problem ograniczony
rake 11.0.1
. Odkąd @Kris opublikował swoją odpowiedź, dostępne są nowe wersje Rake i idealnie byłoby, gdybyś był w stanie dotrzymać kroku czasom i nie zostać przypięty do starej wersji rake. Wierz mi, byłem tam i nie jest to dobry pomysł, jeśli możesz temu zapobiec. Nie jest to również problem z Railsami 2.3 ani żadną inną wersją railsów.Any Rake
< v11.0.1
lub> v11.0.1 and < v12
będą działać, ale nadal jest to obejście i należy go również unikać; idealnie będziesz w stanie nadążyć za duchem czasu.Ponieważ
last_comment
jest przestarzała, sama zależność powinna zostać zaktualizowana. W moim przypadku to,rspec-core
nawiasem mówiąc, naprawiło to tylko w wersji 3.4.4 .Poprawka
Uaktualnij swoją zależność do wersji, która nie wywołuje,
last_comment
ale wywołujelast_description
. Prawdopodobnierspec
i aktualizacjarspec-core
do wersji 3.4.4 lub nowszej naprawi to.rspec-core
<3.4.4 połączeńlast_comment
.Jeśli twoja zależność nie ma wersji, która nie dzwoni
last_description
, bądź dobrym obywatelem i prześlij PR, aby to naprawić :)źródło