NoMethodError: metodo non definito `last_comment 'dopo l'aggiornamento al rake 11 - ruby-on-rails, ruby-on-rails-3, rake

Quando si esegue qualsiasi rake compito che ottengo:

NoMethodError: metodo non definito `last_comment" per

Questo è stato dopo bundle update che ha tirato la nuova versione di rake, versione 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: metodo non definito `last_comment" per #

versioni

  • Rotaie 3.2.11
  • Rake 11.0.1

risposte:

118 per risposta № 1

Rake 11.0.1 rimuove il last_comment metodo che Rotaie 2.3 usi rspec-core (<3.4.4). Quindi, fino a quando una patch non verrà rilasciata, dobbiamo aggiungere il rake a una versione precedente in Gemfile:

gem "rake", "< 11.0"

poi:

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

Ora stiamo usando rake 10.5.0 che ha ancora il last_comment metodo e il nostro rake le attività funzioneranno di nuovo.

AGGIORNARE: Ora è stato corretto in rspec, quindi l'unica cosa necessaria dovrebbe essere l'aggiornamento di rspec.


64 per risposta № 2

nella correzione rapida di Rails può essere modificato ./Rakefile (nella cartella dell'app)

e aggiungi queste linee prima di chiamare Rails.application.load_tasks:

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

così intero Rakefile potrebbe sembrare

  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 per risposta № 3

Questo è un problema in rake che è stato già affrontato.

La risposta di @ equivalent8 è una patch di scimmia e dovrebbe essere evitata.

Come sottolinea @Kris, questo è un problema isolato rake 11.0.1. Dal momento che @Kris ha pubblicato la sua risposta, ci sononuove versioni di Rake disponibili e idealmente si sarebbe in grado di rimanere con i tempi e non essere bloccato a una vecchia versione di rake. Credetemi, sono stato lì e non è una buona idea se potete aiutarlo, anche questo non è un problema con Rails 2.3 o qualsiasi versione di rail.

Qualsiasi rastrello < v11.0.1 o > v11.0.1 and < v12 funzionerà, ma questo è ancora un problema e dovrebbe essere evitato; idealmente sarai in grado di stare con i tempi.

Da last_comment è deprecato che la dipendenza stessa dovrebbe essere aggiornata. Nel mio caso lo è stato rspec-core che per inciso ha solo risolto questo v3.4.4.

La correzione

Aggiorna la tua dipendenza a una versione che non chiama last_comment ma chiama last_description anziché. È probabile rspec e aggiornamento rspec-core a 3.4.4 o superiore lo risolverà. rspec-core <3.4.4 chiamate last_comment.

Se la tua dipendenza non ha una versione che non chiama last_description, sii un buon cittadino e invia un PR per risolverlo :)


18 per risposta № 4

Aggiornamento all'ultimo Rspec la gemma fa il lavoro:

bundle update rspec-rails


15 per risposta № 5

Aggiorna la gemma rspec-rails

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

abbracci!


domande correlate
Menu