class Hashie::Clash
def method_missing(name, *args) #:nodoc:
def method_missing(name, *args) #:nodoc: if args.empty? && name.to_s.end_with?('!') key = name[0...-1].to_sym case self[key] when NilClass self[key] = self.class.new({}, self) when Clash self[key] when Hash self[key] = self.class.new(self[key], self) else fail ChainError, 'Tried to chain into a non-hash key.' end elsif args.any? merge_store(name, *args) else super end end