lib/thread_parent.rb in thread-parent-1.0.1 vs lib/thread_parent.rb in thread-parent-1.0.2

- old
+ new

@@ -1,24 +1,46 @@ require 'thread_parent/version' require 'thread' module ThreadParent - class Thread < Thread - def initialize - @_parent = Thread.current - super - end + class Parents - def parent - @_parent + def initialize(child) + @child = child end def [](key) - if key?(key) - super + if @child.key?(key) + @child[key] else - parent[key] + @child.parent.parents[key] end end + end +end + +class Thread + + alias_method :_initialize, :initialize + + def initialize(*args, &block) + @_parent = Thread.current + _initialize(*args, &block) + end + + def parent + @_parent + end + + def parents + ThreadParent::Parents.new(self) + end + + def self.parent + Thread.current.parent + end + + def self.parents + ThreadParent::Parents.new(Thread.current) end end