Rails 2.3, rake y reenable method
Wednesday, 08 Julius , 2009
Estoy terminando de hacer una migration a Rails 2.3 de la
app con la que estoy trabajando, resulta que me encontré con el siguiente tema:
Luego de instalar rails y migrar la app, llegó el momento de hacer un deploy a
staging, entonces me econtré con el siguiente error:
undefined method `reenable' for <Rake::Task db:schema:dump => [environment]>:Rake::Task
googleando un poco llegué a este link que dice que hay que instalar
la nueva versión de rake, investigando un poco más, llegué a este PATCH
que hace uso del método Rake::Task#reenable, el caso es que este método
se agrega e con la versión de rake 0.8.2 y como el pibe dice en el comentario
del patch, no hay problemas por que rails 2.3 require rake 0.8.3…. pero
que pasa cuando:
1- Instalo rails 2.3
2- Hago un ‘rake rails:freeze’
3- hago ‘cap staging deploy:migrations’
Y no tengo rails 2.3 instalado en el server y por eso justamente hice un freeze.
Si leemos la task que arma las dependencias de rails:
s.add_dependency('rake', '>= 0.8.3')
s.add_dependency('activesupport', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('activerecord', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('actionpack', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('actionmailer', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('activeresource', '= 3.0.pre' + PKG_BUILD)
uando hacemos el freeze nos copia todas estas cosas menos el rake,
lo cual parece razonable. Pero creo debería agregar en config/environment.rb
config.gem “rake”, :version => ’0.8.3′
Que opinan uds?

Wednesday, 08 Julius , 2009 at 12:50 pm
Me mataste con esto :) Lo que si tengo para recomendar, es que aproveches el HTML y en vez de referencias [N] uses los queridos links :D
Wednesday, 08 Julius , 2009 at 1:01 pm
Sí, tenés razón pero como o copié de un mail que mandé a la lista de ruby-ar, quedó así, y la pereza me mata :)
Wednesday, 08 Julius , 2009 at 1:12 pm
Done!
Thursday, 09 Julius , 2009 at 8:18 am
Yo opino…
1) no podes freezar Rake en vendor/gems por que el bootstrap de Rails mismo depende de Rake como gema.
Ya que no tenes Rake actualizado en el server, podes poner lo siguiente en el Rakefile de tu aplicacion:
http://pastie.org/539834
Avisame si te sirve.
Thursday, 09 Julius , 2009 at 10:32 am
Que buen detalle!, Luis el server ahora lo tengo actualizado, lo que yo quería plantear es como mejorar ese pequeño ‘problema’ de rails, otra opción podría ser agregar un warning que imprima un mensaje cuando se hace el freeze.
Saludos