[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Exit loop after checking for some time

Claire Hill

4/9/2009 3:00:00 AM

hi all, i'm really new to ruby and i need to do a script that will check
my email every 5minutes and after 20minutes of no new mail it will
produce "test fail" (im a tester by the way). i have found a cool code
for checking email every 5min but i could not find a way to stop it
after 20minutes? any help is greatly appreciated :)

here's the code: (i took credit to the originator of the code here and
my sincere thanks..:))

def time_block
start_time = Time.now
Thread.new { yield }
Time.now - start_time
end

def repeat_every(seconds)
begin
time_spent = time_block { yield }
sleep(seconds - time_spent)
end while time_spent < seconds
end


repeat_every(300) { # checking of email ever 5 minutes
puts "Start checking: #{Time.now}"
# email checking here
puts "End checking: #{Time.now}"
}
--
Posted via http://www.ruby-....

4 Answers

Bosko Ivanisevic

4/9/2009 6:48:00 AM

0

On Apr 9, 4:59 am, Claire Hill <cart...@gmail.com> wrote:
> hi all, i'm really new to ruby and i need to do a script that will check
> my email every 5minutes and after 20minutes of no new mail it will
> produce "test fail" (im a tester by the way). i have found a cool code
> for checking email every 5min but i could not find a way to stop it
> after 20minutes? any help is greatly appreciated :)
>
> here's the code: (i took credit to the originator of the code here and
> my sincere thanks..:))
>
> def time_block
>   start_time = Time.now
>   Thread.new { yield }
>   Time.now - start_time
> end
>
> def repeat_every(seconds)
>  begin
>     time_spent = time_block { yield }
>     sleep(seconds - time_spent)
>  end while time_spent < seconds
> end
>
> repeat_every(300) { # checking of email ever 5 minutes
>   puts "Start checking: #{Time.now}"
>   # email checking here
>   puts "End checking: #{Time.now}"}
>
> --
> Posted viahttp://www.ruby-....

Easiest way is to add one more argument to the repeat_every function:

def repeat_every(seconds, checks_count)
check_no = 0
begin
time_spent = time_block { yield }
check_no += 1
break if check_no >= checks_count
sleep(seconds - time_spent)
end while time_spent < seconds
end

And call it with:

repeat_every(300, 4) {....}

Claire Hill

4/9/2009 7:10:00 AM

0

Bosko Ivanisevic wrote:

> Easiest way is to add one more argument to the repeat_every function:
>
> def repeat_every(seconds, checks_count)
> check_no = 0
> begin
> time_spent = time_block { yield }
> check_no += 1
> break if check_no >= checks_count
> sleep(seconds - time_spent)
> end while time_spent < seconds
> end
>
> And call it with:
>
> repeat_every(300, 4) {....}

hey there, thank you so much..you save me!!! my heartfelt thanks :)
--
Posted via http://www.ruby-....

lasitha

4/9/2009 1:38:00 PM

0

On Thu, Apr 9, 2009 at 8:29 AM, Claire Hill <cartajo@gmail.com> wrote:
> [...]
>
> def repeat_every(seconds)
> =A0begin
> =A0 =A0time_spent =3D time_block { yield }
> =A0 =A0sleep(seconds - time_spent)
> =A0end while time_spent < seconds
> end

FYI, if time_spent > seconds in the above method, the call to sleep
will raise 'ArgumentError: time interval must be positive'.

cheers,
lasitha

Claire Hill

4/13/2009 1:45:00 AM

0

lasitha wrote:
> On Thu, Apr 9, 2009 at 8:29 AM, Claire Hill <cartajo@gmail.com> wrote:
>> [...]
>>
>> def repeat_every(seconds)
>> �begin
>> � �time_spent = time_block { yield }
>> � �sleep(seconds - time_spent)
>> �end while time_spent < seconds
>> end
>
> FYI, if time_spent > seconds in the above method, the call to sleep
> will raise 'ArgumentError: time interval must be positive'.
>
> cheers,
> lasitha

hi lasitha..:) thanks for the info...sure it helps a lot..:)
--
Posted via http://www.ruby-....