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