Gastón Ramos

Blog personal

← Volver al blog

Rails 2.3, rake y reenable method

Recuperado del archivo original de WordPress.

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?

También puede interesarte

Comentarios del archivo (5)

Lucas · 8 de julio de 2009

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

Gastón Ramos · 8 de julio de 2009

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 :)

Gastón Ramos · 8 de julio de 2009

Done!

Luis Lavena · 9 de julio de 2009

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.

Gastón Ramos · 9 de julio de 2009

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

Los comentarios históricos se conservan como archivo. Para conversar hoy, podés escribirme.