Question: I find myself constantly running into bugs where I access Hashes with symbols instead of strings and vice versa. I would like to do:

```
require 'active_support/hash_with_indifferent_access'
Hash = HashWithIndifferentAccess
# (irb):xx: warning: already initialized constant Hash

```

This warning is because Hash is already defined, but I don't really care. 

Sure, the performance might be slightly worse. 

Sure, maybe some gem creates a hash with strings AND symbols and will break -- but how common is that?

Is this bad? Anti-pattern? Will I regret doing this? What are the downsides? Any good/bad experiences doing this?

Answer: 
What do you think `{}.class` is going to be after your kludge? Right, it will be `Hash`.

What do you think `Hash[:a, 'a']` will do? Right, `SystemStackError` for hopefully obvious reasons.

So yes, this is a bad idea, you will regret it, and an important downside is that it doesn't actually do what you think it will do.
The big downside is that you are making your Hash functions become O(n) instead of O(1). Comparing strings is much more demanding than comparing symbols so I'd say that would be a significant performance hit.

You shouldn't really be running into bugs when accessing Hashes with symbols since they are very similar to strings, maybe reading this article helps: [Differences between symbols and strings](http://www.reactive.io/tips/2009/01/11/the-difference-between-ruby-symbols-and-strings/)