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.