This is a handy introspection tool for use in IRB, or your REPL of choice. It pretty prints the following details about a class or module:
-
class inheritance chain
-
modules included in each class in the chain
-
nested modules and classes
-
nested constants
-
class methods
-
instance methods
-
singleton methods (if you pass it a non-module)
-
arity for each method or
-
formal parameter names (if it can find the method source)
-
methods grouped by lib/gem
It only works in Ruby 1.9 for now.
>> PrintMembers.pm String String Superclasses Included Modules PrintMembers::Ext::String Comparable Object PrintMembers::Ext::Object Kernel BasicObject PrintMembers::Ext::BasicObject Class Methods: try_convert/1 Instance Methods: %/1 concat/1 left_fixed(n,pad=?) squeeze!/-1 */1 count/-1 length/0 start_with?/-1 +/1 crypt/1 lines/-1 strip/0 ...
-
Classes are listed in order from most to least derived.
-
Modules appear next to the classes through which they are included.
-
If the source file for a method can be found, it is parsed to find the parameters for the method, otherwise the arity of the method is shown. Default arguments are not implemented yet and they currently appear as ‘?’.
If you pass an object to pm
that is not a class or module, the class of that object will be used:
>> PrintMembers.pm 17 Fixnum Superclasses Included Modules Integer Numeric Comparable Object PrintMembers::Ext::Object Kernel BasicObject PrintMembers::Ext::BasicObject Instance Methods: %/1 chr/-1 polar/0 &/1 coerce/1 pred/0 */1 conj/0 quo/1 ...
Passing a Regexp as the second argument will filter the methods:
>> PrintMembers.pm String, /to/ String Superclasses Included Modules PrintMembers::Ext::String Comparable Object PrintMembers::Ext::Object Kernel BasicObject PrintMembers::Ext::BasicObject Instance Methods: to_c/0 to_f/0 to_r/0 to_str/0 upto/-1 to_color_string() to_i/-1 to_s/0 to_sym/0
The install
method monkey patches Object
with a pm
method. Call it from your .irbrc file:
>> PrintMembers.install >> Array.pm /^re/ Array Superclasses Included Modules PrintMembers::Ext::Array Stackable Indexable Enumerable Object PrintMembers::Ext::Object Kernel BasicObject PrintMembers::Ext::BasicObject Instance Methods: recursively(&block) reject/0 reverse/0 recursively!(&block) reject!/0 reverse!/0 reduce/-1 replace/1 reverse_each/0
lsrb [pattern] module.lsrb [pattern]
Lists .rb files accessible from the load path, optionally filtering by regexp pattern
. The second form lists only source files that define methods in module
.
lslib [pattern] module.lslib [pattern]
Like lsrb
but identifies distinct libraries and gems (and gem versions) instead of listing all source files.
lsmod [pattern] module.lsmod [pattern]
Lists modules and classes. The second form lists only nested modules under module
.
-
ActiveRecord integration
-
Instance variables
-
Extract RDoc markup
-
Use RI database
-
View method source
-
More extensive module/library browsing