lib/l2meter/thread_safe.rb in l2meter-0.6.0 vs lib/l2meter/thread_safe.rb in l2meter-0.6.1
- old
+ new
@@ -30,12 +30,12 @@
end
def_delegators :receiver, *EMITTER_METHODS
def context(*args, &block)
- value = emitter.context(*args, &block)
- block_given?? value : clone_with_emitter(value)
+ value = current_emitter.context(*args, &block)
+ Emitter === value ? clone_with_emitter(value) : value
end
def disable!
@disabled = true
end
@@ -47,12 +47,10 @@
private
attr_reader :emitter
def clone_with_emitter(emitter)
- clone.tap do |ts|
- ts.emitter = emitter
- end
+ self.class.new(emitter).tap { |ts| ts.disable! if @disabled }
end
def receiver
@disabled ? null_emitter : current_emitter
end