Skip to content

Instantly share code, notes, and snippets.

@raggi
Created December 30, 2009 19:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raggi/266308 to your computer and use it in GitHub Desktop.
Save raggi/266308 to your computer and use it in GitHub Desktop.
class Binding
def set(hash)
backup = Thread.current[:binding_set]
hash.each do |var, val|
Thread.current[:binding_set] = val
eval(%(#{var} = Thread.current[:binding_set]))
end
ensure
Thread.current[:binding_set] = backup
end
end
# TOGGLE ME:
# a = nil
b = Kernel::binding
b.set(:a => 1)
p b.send :local_variables
p Kernel::binding.send :local_variables
p local_variables
p eval('a', Kernel::binding)
p a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment