NAME
terminator
SYNOPSIS
an external timeout mechanism based on processes and signals. safe on
windows. safe for system calls. safe for minors.
INSTALL
gem install terminator
URIS
http://codeforpeople.com/lib/ruby
http://rubyforge.org/projects/codeforpeople
HISTORY
1.0.0
cleanup for 1.9
0.4.2
initial version with
AUTHORS
ara.t.howard - [email protected]
mikel lindsaar - [email protected]
SAMPLES
<========< samples/a.rb >========>
~ > cat samples/a.rb
require 'terminator'
Terminator.terminate 2 do
sleep 4
end
~ > ruby samples/a.rb
samples/a.rb:3:in `<main>': Timeout out after 2.0s (Terminator::Error)
from /Users/ahoward/git/ahoward/terminator/lib/terminator.rb:127:in `eval'
from /Users/ahoward/git/ahoward/terminator/lib/terminator.rb:127:in `block in terminate'
from /Users/ahoward/git/ahoward/terminator/lib/terminator.rb:129:in `call'
from /Users/ahoward/git/ahoward/terminator/lib/terminator.rb:129:in `block in terminate'
from samples/a.rb:4:in `call'
from samples/a.rb:4:in `sleep'
from samples/a.rb:4:in `block in <main>'
from /Users/ahoward/git/ahoward/terminator/lib/terminator.rb:136:in `call'
from /Users/ahoward/git/ahoward/terminator/lib/terminator.rb:136:in `terminate'
from samples/a.rb:3:in `<main>'
<========< samples/b.rb >========>
~ > cat samples/b.rb
require 'terminator'
Terminator.terminate 0.2 do
sleep 0.4 rescue puts 'timed out!'
end
~ > ruby samples/b.rb
timed out!
<========< samples/c.rb >========>
~ > cat samples/c.rb
require 'terminator'
begin
Terminator.terminate :seconds => 0.2 do
sleep 0.4
end
rescue Terminator.error
puts 'timed out!'
end
~ > ruby samples/c.rb
timed out!
<========< samples/d.rb >========>
~ > cat samples/d.rb
require 'terminator'
trap = lambda{ puts "signaled @ #{ Time.now.to_i }" }
Terminator.terminate :seconds => 1, :trap => trap do
sleep 2
puts "woke up @ #{ Time.now.to_i }"
end
~ > ruby samples/d.rb
signaled @ 1376702274
woke up @ 1376702275
<========< samples/e.rb >========>
~ > cat samples/e.rb
require 'terminator'
puts "Looping 1000 times on the terminator..."
success = false
1.upto(1000) do |i|
success = false
Terminator.terminate(1) do
success = true
end
end
puts "\nsuccess!" if success
~ > ruby samples/e.rb
Looping 1000 times on the terminator...
success!