[Ror-es] Ejecutar comando externo desde ruby?
Damian Janowski
damian.janowski at gmail.com
Fri Feb 2 13:52:40 GMT 2007
On 2/2/07, Luis Villegas <luis.vilec at gmail.com> wrote:
> Buenas, tengo que hacer un procedimiento que ejecute un programa externo,
> y lo tengo así:
>
> c:loquesea> ruby proceso.rb bd.sql
>
>
> proceso.rb:
>
> ruta = ARGV[0]
> archivo = File.open(ruta)
> f = IO.popen("mysqldump "+archivo)
>
> puts("mas cosas")
>
>
>
> entonces, me gustaría saber como hacer para que "mas cosas" salga en
> pantalla cuando se termine de ejecutar el proceso y no justo después
> de que se empiece a ejecutar.
> Ah, y también me gustaría saber si es posible sacar en pantalla lo que
> hace mysqldump en vez de ejecutarlo en segundo plano
Creo que la forma de hacerlo es con `` (son unas comillas raras):
resultado = `mysqldump #{archivo}`
BTW, recordá que ese File.open está dejando abierto el archivo. Para
leer todo el contenido de una, usá File.read. Si querés trabajar con
el archivo sin preocuparte por cerrarlo, entonces:
File.open(ruta, 'r') do |file|
algo = file.read
end
Si el bloque falla, se ocupa de cerrar el archivo por vos.
Saludos!
More information about the Ror-es
mailing list