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?

5 Responses to “Rails 2.3, rake y reenable method”

  1. Lucas Says:

    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

  2. Gastón Ramos Says:

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

  3. Gastón Ramos Says:

    Done!

  4. Luis Lavena Says:

    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.

  5. Gastón Ramos Says:

    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


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.