Ближайшее, что вы получите в Ruby:
def foo(bar=nil, **kwargs)
bar = bar || kwargs[:bar]
end
Что не очень хорошо, поскольку метод теперь принимает любой аргумент ключевого слова.
Ruby не позволяет дублировать имя аргумента:
irb(main):022:0> def foo(bar = nil, bar: nil)
irb(main):023:1> end
Traceback (most recent call last):
SyntaxError ((irb):22: duplicated argument name)
def foo(bar = nil, bar: nil)
И хотя это может быть хорошей функцией в Python - это не Ruby -eske. В Ruby передача ha sh методу следует тому же синтаксису, что и определение ha sh - потому что это именно то, что вы делаете.