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