Guest User

Untitled

a guest
Jul 20th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.53 KB | None | 0 0
  1. class Object
  2. module InstanceExecHelper; end
  3. include InstanceExecHelper
  4. def instance_exec(*args, &block)
  5. begin
  6. old_critical, Thread.critical = Thread.critical, true
  7. n = 0
  8. n += 1 while respond_to?(mname="__instance_exec#{n}")
  9. InstanceExecHelper.module_eval{ define_method(mname, &block) }
  10. ensure
  11. Thread.critical = old_critical
  12. end
  13. begin
  14. ret = send(mname, *args)
  15. ensure
  16. InstanceExecHelper.module_eval{ remove_method(mname) } rescue nil
  17. end
  18. ret
  19. end
  20. end
Add Comment
Please, Sign In to add comment