Acho que a maioria de nós saberá que você pode definir um método com o operador splat e, em seguida, tratá-lo como uma matriz para o conteúdo de seu coração.
def my_method(*args)
puts args
end
No entanto, o que eu não sabia fazer era obter facilmente o número de argumentos de um método quando você não o definia ou quando não queria usar o operador splat.
class Example
def test(first, second, third='optional')
end
end
puts Example.method(:test).parameters
Isso vai até mostrar se o parâmetro é necessário ou não. Encontrado no estouro da pilha, é claro.