rake sh en otro directorio

Posted: July 17th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, how-to, rake | Tags: , , , | No Comments »

Problema: Quiero ejecutar un comando desde otro directorio en rake (por ejemplo, ejecutar un makefile que está en un subdirectorio).
Solución: Agrego al rakefile la posibilidad de ejecutar comandos en otro directorio. Para eso, al principio de mi rakefile puse:


require 'fileutils'

def sh_in_dir( dirname, *args, &block )
  old_path = pwd
  FileUtils.chdir( dirname )
  sh( *args, &block )
  FileUtils.chdir( old_path )
end

Happy hacking,

Aureliano.

(Via aurelianito.) Original Link: rake sh en otro directorio


Rails 2.3, rake y reenable method

Posted: July 13th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, Rails | Tags: , , , , | No Comments »

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?

(Via Gastón Ramos – Ruby, Rails….) Original Link: Rails 2.3, rake y reenable method