From: "mame (Yusuke Endoh)" Date: 2013-01-07T12:46:20+09:00 Subject: [ruby-core:51285] [ruby-trunk - Bug #7663] Unable to invoke a method with `**kwargs` if the receiver doesn't define keyword arguments Issue #7663 has been updated by mame (Yusuke Endoh). In the current design, keyword arguments are NOT omittable at a callee side. In other words, you cannot pass keyword arguments to a method that does not support keyword argments. Other possible behavior is to ignore the passed arguments silently (as you expected), but I'm afraid if it is rather error-prone than useful. It tends to hide bugs. If you really want to do so, you can use `**` parameter explicitly. def hello(**dummy) puts "hello" end A bare `**` (#7662) is indeed useful in this use case. I'm not so positive to this use case itself, though. ---------------------------------------- Bug #7663: Unable to invoke a method with `**kwargs` if the receiver doesn't define keyword arguments https://bugs.ruby-lang.org/issues/7663#change-35251 Author: wycats (Yehuda Katz) Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: 2.0.0dev This works: def hello puts "hello" end hello(*[]) This does not: def hello puts "hello" end hello(**{}) I may be misunderstanding the idea behind the keyword arguments, but I would expect them to behave similarly to regular arguments when used with splat. -- http://bugs.ruby-lang.org/