[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