Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2012, 13:28
AK48
 
Fecha de Ingreso: junio-2012
Ubicación: lujan
Mensajes: 6
Antigüedad: 12 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.