Forum: Rails-ES Dudilla doEvents. proceson en segundo plano

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
xurde dix (Guest)
on 2009-02-20 11:26
(Received via mailing list)
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
Andrés G. (Guest)
on 2009-02-20 11:49
(Received via mailing list)
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/
Daniel R. Troitiño (Guest)
on 2009-02-20 12:01
(Received via mailing list)
2009/2/20 xurde dix <removed_email_address@domain.invalid>:
> 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.
xurde dix (Guest)
on 2009-02-20 12:07
(Received via mailing list)
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 <
removed_email_address@domain.invalid> escribió:
Andrés G. (Guest)
on 2009-02-20 13:08
(Received via mailing list)
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 :-)

[1]
http://codeidol.com/other/rubyckbk/Files-and-Direc...

2009/2/20 xurde dix <removed_email_address@domain.invalid>
Francesc E. (Guest)
on 2009-02-20 17:47
(Received via mailing list)
Puedes mirarte como lo hace Paperclip a la hora de regenerar archivos
desde las rake task.

2009/2/20 Andrés gutiérrez <removed_email_address@domain.invalid>:
This topic is locked and can not be replied to.