def with (hash, quiet: false)
      old_values = data.values_at(hash.keys)
      log.debug "with #{hash}", quiet: quiet do
        set hash
        yield
      end
    ensure
      hash.keys.each.with_index do |key, i|
        @data[key] = old_values[i]
      end
    end
def with (hash, quiet: false)
      old_values = data.values_at(hash.keys)
      log.debug "with 
        set hash
        yield
      end
    ensure
      hash.keys.each.with_index do |key, i|
        @data[key] = old_values[i]
      end
    end
def with ( hash , quiet : false ) old_values = data . values_at ( hash . keys ) log . debug "with #{hash}" , quiet : quiet do set hash yield end ensure hash . keys . each . with_index do | key , i | @data [ key ] = old_values [ i ] end end
Yield with the hash temporary merged into the context variables.
 Only variables specifically named in +hash+ will be reset when the yield returns.
 @param [Hash] hash The values to merge into the context variables.
 @return Whatever the yielded-to block returns.
 @macro quietable
Yield with the hash temporary merged into the context variables . Only variables specifically named in + hash + will be reset when the yield returns .