rails/rails — pull request #15534 by Robovirtuoso (2014-06-05 17:00:58+00:00)
Title: Indifferent hash access for inheritable options

Creating an `ActiveSupport::InheritableOptions` object with a hash that has string keys as the parent does not yield what you would expect.

```ruby
opts = ActiveSupport::InheritableOptions.new({ 'foo' => 'bar' })
opts.foo
#=> nil
```

This is due to `ActiveSupport::OrderedOptions` overriding `Hash#[]` to convert the hash-lookup to a symbol.
https://github.com/rails/rails/blob/4-1-stable/activesupport/lib/active_support/ordered_options.rb#L26

Without changing the original parent hash, and still maintaining a reference to the original parent, my solution is to `symbolize_keys` on the parent when the hash-lookup happens.