Project

General

Profile

Bug #20251

Updated by phillipp (Phillipp Röll) over 1 year ago

Suppose we have the following method as part of an API client: 

 ``` 
 def post(path, params, timeout: 30) 
 end 
 ``` 

 The method is then called like this: 

 ``` 
 post("/persons", name: "John Doe") 
 ``` 

 This leads to an error message `ArgumentError: wrong number of arguments (given 1, expected 2)`. I suppose the (implicit) hash is used for keyword arguments. 

 My expectation would be, that: 

 1. the Hash (passed without the brackets, but that is not needed in other cases) would be accepted as the `params` argument _or_ 
 2. that an a `ArgumentError` would be raised with the message `ArgumentError: unknown keyword: :name` 

 In my opinion, the first case should be what's happening, happending, the second behaviour would be my expectation if that's not possible, because a hash without brackets can't be mixed without passing keyword arguments. 

 Either way, starting with Ruby 3.0, the behaviour makes no sense to me anymore.

Back