Guest User

Untitled

a guest
Feb 19th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.51 KB | None | 0 0
  1. module ThreadLocalExtension
  2. protected
  3. def self.included(base)
  4. base.extend ClassMethods
  5. end
  6.  
  7. module ClassMethods
  8. def thread_local(name)
  9. klass, name = self.to_s, name.to_s
  10.  
  11. (class << self; self end).send(:define_method, name, Proc.new do
  12. Thread.current["__#{klass}_#{name}__".intern]
  13. end)
  14.  
  15. (class << self; self end).send(:define_method, name + "=", Proc.new do |value|
  16. Thread.current["__#{klass}_#{name}__".intern] = value
  17. end)
  18. end
  19. end
  20. end
Add Comment
Please, Sign In to add comment