Foros del Web » Programación para mayores de 30 ;) » Programación General »

leer salida IO.popen

Estas en el tema de leer salida IO.popen en el foro de Programación General en Foros del Web. Buenas, la cuestion es la siguiente. desde el controlador estoy llamando a un programa, el cual si lo corro desde el terminal me tira varias ...
  #1 (permalink)  
Antiguo 20/06/2012, 13:28
 
Fecha de Ingreso: junio-2012
Ubicación: lujan
Mensajes: 6
Antigüedad: 11 años, 9 meses
Puntos: 0
leer salida IO.popen

Buenas, la cuestion es la siguiente. desde el controlador estoy llamando a un programa, el cual si lo corro desde el terminal me tira varias lineas "como cuando se instala algo" y al final tira el resultado. Mi idea es que al ejecutar el programa desde el controlador, ir guardando la respuesta ( osea cada linea ke va apareciendo en la terminal) en una variable y llamar a esa variable desde el html, e ir imprimiendo en la web cada linea en tiempo real. Me funciona a medias expongo de las dos formas que probe y explico el resultado.

primera forma:

Desde el controlador

def ejecutar

ejecuta = IO.popen('./rcr -l hash md5_alpha-numeric-space_1-8_0') #ejecuta el programa
@respuesta = ejecuta.read #guarda respuesta en variable

end

Desd el HTML


<html>
<body>

<p><%= @respuesta %></p> #imprime en la pagina lo que esta en la variable

</body>
</html>

Esto funciona, el tema es que lo pone en pantalla una vez que el programa termino de ejecutarse, no en tiempo real.


Opcion 2 :

Desdecontrolador

def ejecutar

xx = nil

IO.popen('./rcr -l hash md5_alpha-numeric-space_1-8_0') do |xx|
xx.each do |line|
@respuesta

end
end


Desd el HTML


<html>
<body>

<p><%= @respuesta %></p> #imprime en la pagin lo que esta en la variable

</body>
</html>

De esta manera va leyendo linea a linea, pero igual que la anterior, solo lo imprime en pantalla una vez termino la ejecucion del programa en consecuencia, solo imprime la ultima linea.

A alguien se le ocurre alguna solucion o por donde mirar?

Gracias y saludos.

Etiquetas: rubyonrails
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:59.