Dudilla doEvents. proceson en segundo plano

Hola lista

Estoy desarrollando una tarea rake y bueno es caso es que tarda un poco
entonces para que no parezca bloqueado queria que fueran saliento
puntos,
para ver que algo se mueve, pero elproblema es que me salen todos de
golpe
cuando acaba.

Existe algo en ruby tipo el doEvents de Visual Basic? algo que diga
tomate
un respiro para pintar el print

peras = Pera.find :all
peras.each do |pera|
pera.nomnbre= “nombre”
pera.save
print “.”
end

Con puts en vez de print funciona pero quiero los puntos sin salto de
linea

hay otro comando parecido a print que me sirva

Gracias, me encanta esta lista siempre aprendo cosas interesantes

Jorge G.
Desarrollador Web Freelance

Creo que creando dos hilos. Uno que haga el save y otro el put. Y que se
vayan alternando. Es una idea a lo loco, seguro que recibes una solución
mucho más rápida y viable. pero si no es así mirate algún tutorial que
hable
de threads. Aquí te dejo un ejemplo:
first = Thread.new() do
myindex = 0
while(myindex < 10):
puts “Thread One!”
sleep 3
myindex += 1
end
end
second = Thread.new() do
myindex2 = 0
while(myindex2 < 5):
puts “Thread Two!”
sleep 5
myindex2 += 1
end
end
third = Thread.new() do
myindex3 = 0
while(myindex3 < 2):
puts “Thread Three!”
sleep 10
myindex3 += 1
end
end
first.join()
second.join()
third.join()
→ Thread One!
→ Thread Two!
→ Thread One!

Este código lo he sacado de este tutorial de Ruby [1] que en mi opinión
está
muy bien

[1] http://www.humblelittlerubybook.com/book/

2009/2/20 xurde dix [email protected]:

peras = Pera.find :all

Gracias, me encanta esta lista siempre aprendo cosas interesantes

Jorge G.
Desarrollador Web Freelance

Para no liarte con hilos puedes probar si un $stdout.flush después del
print te funciona.

Suerte.

Muchas gracias por las dos estupendas respuestas

Me quedo con $stdout.flush que me soluciona el problema actual

Tambien me parece muy interesante el tema de los Thread, gracias por el
tuturial

El 20 de febrero de 2009 11:00, Daniel R. Troitiño <
[email protected]> escribió:

Por completar. Como no sabía como funcionaba la solución de Daniel, la
he
googleado, y con esto me ha quedado claro:

you can flush the output as soon as you have printed the prompt.
It tells the standard output device (an object named STDOUT), “don’t
wait;
display what you have in your buffer right now.”

Y mucho más claro me ha quedado en el caso de este link [1] en el que
necesitan escribir lo que sale de un bucle según va saliendo, pero
además lo
quieren ir guardando en un archivo.

Flush es nuestro amigo :slight_smile:

[1]
http://codeidol.com/other/rubyckbk/Files-and-Directories/Writing-to-a-File/

2009/2/20 xurde dix [email protected]

Puedes mirarte como lo hace Paperclip a la hora de regenerar archivos
desde las rake task.

2009/2/20 Andrés gutiérrez [email protected]: