ruby-on-rails - rails - rake migrate
NoMethodError: método indefinido `last_comment ''después de actualizar a rake 11 (5)
Al ejecutar cualquier tarea de
rake
me sale:
NoMethodError: método indefinido `last_comment ''para
Esto fue después de la
bundle update
que
11.0.1
la nueva versión de rake, la versión
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: método indefinido `last_comment ''para # <Rake :: Aplicación: 0x007ff0cf37be38>
Versiones
- Carriles 3.2.11
- Rastrillo 11.0.1
Este es un problema en el rastrillo que ya se ha abordado.
La respuesta de @ equivalente8 es un parche de mono y debe evitarse.
Como señala @Kris, este es un problema aislado del
rake 11.0.1
.
Dado que @Kris ha publicado su respuesta, hay nuevas versiones de Rake disponibles e, idealmente, podría quedarse con los tiempos y no estar sujeto a una versión anterior de Rake.
Créeme, he estado allí y no es una buena idea si puedes evitarlo.
Además, esto no es un problema con Rails 2.3 o cualquier versión de rails.
Cualquier Rake
< v11.0.1
o
> v11.0.1 and < v12
funcionará, pero esto sigue siendo una solución y también debe evitarse;
idealmente podrás quedarte con los tiempos.
Dado que
last_comment
está en desuso, la propia dependencia debería actualizarse.
En mi caso, fue
rspec-core
que, por cierto, solo solucionó esto en
v3.4.4
.
La solución
Actualice su dependencia a una versión que no llame a
last_comment
sino que llame a
last_description
.
Es probable que
rspec
y la actualización de
rspec-core
a 3.4.4 o superior lo arreglen.
rspec-core
<3.4.4 llama a
last_comment
.
Si su dependencia no tiene una versión que no llame a
last_description
, sea un buen ciudadano y envíe un RP para solucionarlo :)
La actualización a la última gema
Rspec
hace el trabajo:
bundle update rspec-rails
Rake 11.0.1
removes
el método
last_comment
que
Carriles 2.3
rspec-core (<3.4.4) utiliza.
Por lo tanto, hasta que se publique un parche, necesitamos fijar el rastrillo a una versión anterior en Gemfile:
gem ''rake'', ''< 11.0''
entonces:
$ bundle update
$ grep rake Gemfile.lock
rake
rake (>= 0.8.7)
rake (10.5.0)
rake
rake (< 11.0)
Ahora estamos usando rake 10.5.0 que todavía tiene el método
last_comment
y nuestras tareas de
rake
volverán a funcionar.
ACTUALIZACIÓN : Esto ahora se ha solucionado en rspec, por lo que lo único necesario debería ser actualizar rspec.
Solo actualiza la gema
rspec-rails
Ahora:
gem ''rspec-rails'', ''~> 3.5'', ''>= 3.5.2''
¡abrazos!
en Rails, la solución rápida se puede editar
./Rakefile
(en la carpeta de la aplicación)
y agregue estas líneas antes de llamar a
Rails.application.load_tasks
:
module TempFixForRakeLastComment
def last_comment
last_description
end
end
Rake::Application.send :include, TempFixForRakeLastComment
así que todo el
Rakefile
podría verse así
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