I have defined a module Vehicle
like such
module Vehicle
class <<self
def build
end
private
def background
end
end
end
A call to Vehicle.singleton_methods
returns [:build]
.
How can I inspect all private singleton methods defined by Vehicle
?
In Ruby 1.9+, you can simply do:
Vehicle.singleton_class.private_instance_methods(false)
#=> [:background]
In Ruby 1.8, things are a bit more complicated.
Vehicle.private_methods
#=> [:background, :included, :extended, :method_added, :method_removed, ...]
will return all private methods. You can filter most of the ones declared outside by doing
Vehicle.private_methods - Module.private_methods
#=> [:background, :append_features, :extend_object, :module_function]
but that doesn't get quite all of them out, you have to create a module to do that
Vehicle.private_methods - Module.new.private_methods
#=> [:background]
This last one has the unfortunate requirement of creating a module only to throw it away.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With