Using irb
, we can list methods for particular object by doing following:
\"Name\".methods
But if I want to know how many parameter
You can use the method Method#arity:
"string".method(:strip).arity
# => 0
From the Ruby documentation:
Returns an indication of the number of arguments accepted by a method. Returns a nonnegative integer for methods that take a fixed number of arguments. For Ruby methods that take a variable number of arguments, returns -n-1, where n is the number of required arguments. For methods written in C, returns -1 if the call takes a variable number of arguments.
So, for example:
# Variable number of arguments, one is required
def foo(a, *b); end
method(:foo).arity
# => -2
# Variable number of arguments, none required
def bar(*a); end
method(:bar).arity
# => -1
# Accepts no argument, implemented in C
"0".method(:to_f).arity
# => 0
# Variable number of arguments (0 or 1), implemented in C
"0".method(:to_i).arity
# => -1
Update I've just discovered the exitence of Method#parameters, it could be quite useful:
def foo(a, *b); end
method(:foo).parameters
# => [[:req, :a], [:rest, :b]]