clai2x
April 9, 2009, 4:59am
1
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}”
}
clai2x
April 9, 2009, 8:50am
2
On Apr 9, 4:59 am, Claire H. [email protected] wrote:
start_time = Time.now
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-forum.com/.
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) {…}
clai2x
April 9, 2009, 9:09am
3
Bosko I. 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
clai2x
April 9, 2009, 3:38pm
4
On Thu, Apr 9, 2009 at 8:29 AM, Claire H. [email protected] 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
clai2x
April 13, 2009, 3:44am
5
lasitha wrote:
On Thu, Apr 9, 2009 at 8:29 AM, Claire H. [email protected] 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…