Issue #9731 has been updated by Rafael Frana.


Yes, I agree with you. I'm also not positive to changing keyword arguments to receive even strings and symbols, but I thought OP should request this feature here since it is not Rails specific, as he would have the same behavior with a normal hash using string keys. 

As soon we only support Ruby 2.2 we can store the keywords as symbols, but until there, we can't change `HashWithIndifferentAccess` to use symbols or we are opening Rails applications to receive DDoS attacks.

We already have this method to convert strings keys to symbol keys. It is called `symbolize_keys`. And in my opinion it is fine to use if you know what is doing. I would never call `symbolize_keys` in request parameters for example. At least not until my application is running with the new symbol GC.

----------------------------------------
Bug #9731: Rails' HashWithIndifferentAccess is incompatible with Ruby's keyword arguments
https://bugs.ruby-lang.org/issues/9731#change-46187

* Author: Konstantinos Karachalios
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: 2.1.1
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
Origin: https://github.com/rails/rails/issues/14643

In Ruby it is possible to use a POR Hash in place of keyword arguments, making the transition between using an `options = {}` to keyword arguments easy. 

The same is not true for HashWithIndifferentAccess and this makes it difficult to pass the `params` hash directly to methods with keyword arguments.

### Bug test
```ruby
require 'active_support/hash_with_indifferent_access'
require 'minitest/autorun'

def sum(a: 0, b: 0)
  a + b
end

class BugTest < MiniTest::Unit::TestCase
  def setup
    @normal_hash = {a: 18, b: 24} # just a hash
    @indiff_hash = ActiveSupport::HashWithIndifferentAccess.new(@normal_hash)
  end

  def test_ruby_hash
    assert_equal 42, sum(@normal_hash)
  end

  def test_hash_with_indifferent_access
    assert_equal 42, sum(@indiff_hash)
  end
end
```

### Workaround
```ruby
sum(@indiff_args.symbolize_keys)
```

### VERSIONS
* ruby 2.0.0-p353 & activesupport 4.0.1
* ruby 2.1.0-p0 & activesupport 4.0.3
* ruby 2.1.1-p76 & activesupport 4.0.4, 3.2.17



-- 
https://bugs.ruby-lang.org/