How to find private singleton methods How to find private singleton methods ruby ruby

How to find private singleton methods


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.