Skip to content

Instantly share code, notes, and snippets.

@ku1ik
Created June 17, 2009 21:54
Show Gist options
  • Save ku1ik/131538 to your computer and use it in GitHub Desktop.
Save ku1ik/131538 to your computer and use it in GitHub Desktop.
require 'ruby2ruby'
$q = []
def queue_code(args={}, &blk)
(c = Class.new).class_eval { define_method :proc, blk }
$q << { :code => Ruby2Ruby.translate(c, :proc), :args => args }
end
def run_all_queued
puts "running queued code blocks"
$q.each do |queued|
(c = Class.new).class_eval(queued[:code])
c.new.proc(queued[:args])
end
end
# queue some code
queue_code do |args|
puts "OH HAI"
end
queue_code 2 do |number|
puts 1 + number
end
queue_code 'http://www.example.com/index.html' do |url|
require 'net/http'
require 'uri'
Net::HTTP.get_print URI.parse(url)
end
queue_code "Crash!" do |message|
raise RuntimeError, message
end
# and now run it
run_all_queued
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment