NoMethodError: undefinierte Methode `last_comment 'nach dem Upgrade auf Rake 11 - Ruby-on-Rails, Ruby-on-Rails-3, Rake

Wenn irgendwas läuft rake Aufgabe bekomme ich:

NoMethodError: undefinierte Methode `last_comment 'für

Das war danach bundle update die die neue Version von Rake, Version einlud 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: undefinierte Methode `last_comment 'für #

Versionen

  • Schienen 3.2.11
  • Rechen 11.0.1

Antworten:

118 für die Antwort № 1

Rechen 11.0.1 entfernt das last_comment Methode welche Schienen 2.3 rspec-core (<3.4.4) verwendet. Deshalb, bis / wenn ein Patch veröffentlicht wird, müssen wir Rake an eine ältere Version in Gemfile anheften:

gem "rake", "< 11.0"

dann:

$ bundle update
$ grep rake Gemfile.lock
rake
rake (>= 0.8.7)
rake (10.5.0)
rake
rake (< 11.0)

Wir verwenden jetzt Rake 10.5.0, das noch den last_comment Methode und unsere rake Aufgaben werden wieder funktionieren.

AKTUALISIEREN: Dies wurde nun in rspec behoben, also sollte nur rspec aktualisiert werden.


64 für die Antwort № 2

In Rails kann die Schnellkorrektur bearbeitet werden ./Rakefile (in Ihrem App-Ordner)

und füge diese Zeilen vor dem Aufruf hinzu Rails.application.load_tasks:

module TempFixForRakeLastComment
def last_comment
last_description
end
end
Rake::Application.send :include, TempFixForRakeLastComment

so ganz Rakefile könnte aussehen wie

  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

20 für die Antwort № 3

Das ist ein Ausgabe in Rake das wurde bereits angesprochen.

Die Antwort von @ equivalent8 ist ein Affen-Patch und sollte vermieden werden.

Wie @Kris darauf hinweist, ist dies ein Problem, das isoliert auf rake 11.0.1. Da @Kris seine Antwort gepostet hat, gibt esneue Versionen von Rake verfügbar und idealerweise könntest du in der Lage sein, mit der Zeit zu bleiben und nicht an eine alte Version von Rake gebunden zu sein. Glauben Sie mir, ich war dabei und es ist keine gute Idee, wenn Sie mir helfen können. Auch das ist kein Problem mit Rails 2.3 oder irgendeiner Version von Rails.

Jede Rake < v11.0.1 oder > v11.0.1 and < v12 wird funktionieren, aber das ist immer noch eine Arbeit und sollte auch vermieden werden; Idealerweise werden Sie in der Lage sein, mit der Zeit zu bleiben.

Schon seit last_comment wird veraltet, die Abhängigkeit selbst sollte aktualisiert werden. In meinem Fall war es rspec-core was übrigens nur das in fixierte v3.4.4.

Die Reparatur

Aktualisieren Sie Ihre Abhängigkeit auf eine Version, die nicht aufgerufen wird last_comment aber ruft an last_description stattdessen. Es ist wahrscheinlich rspec und aktualisieren rspec-core bis 3.4.4 oder höher wird es beheben. rspec-core <3.4.4 Anrufe last_comment.

Wenn Ihre Abhängigkeit keine Version hat, die nicht aufgerufen wird last_descriptionSei ein guter Bürger und reiche eine PR ein, um es zu reparieren :)


18 für die Antwort № 4

Aktualisierung auf den neuesten Stand Rspec Juwel macht die Arbeit:

bundle update rspec-rails


15 für die Antwort № 5

Aktualisieren Sie einfach den Edelstein rspec-rails

Jetzt: gem "rspec-rails", "~> 3.5", ">= 3.5.2"

Umarmungen!


Verwandte Fragen
Speisekarte