TODO note my_methods ri_for gem: A "run time RI for existing methods", this gem allows you to grab a method's docu at runtime--for example within a irb. It display the method's source code/comments, ri (if available), arity, parameters, etc. It has proved quite useful, and I wouldn't do a ruby-debug session without it--you might really like it. Examples: >> class A; def go(a); end; end >> A.new.ri_for :go sig: A#go arity 1 def go(a) # do nothing end Parameters: go(a) Searching ri for sig: A#go arity 1 ... (end ri) => "Parameters: go(a)" (or you could do A.ri_for :go -- it falls back to show the instance method if it can't find the class method) >> File.ri_for :delete ri for File.delete ----------------------------------------------------------- File::delete File.delete(file_name, ...) => integer File.unlink(file_name, ...) => integer From Ruby 1.9.1 ------------------------------------------------------------------------ Deletes the named files, returning the number of names passed as arguments. Raises an exception on any error. See also +Dir::rmdir+. (end ri) # arity: -1 appears to be a c method #parameters signature: delete( [[:rest]] ) Or (my favorite) a debug session: (rdb:1) l= ... 74 assert(assigns['order'].order_line_items.map(:unit_price).min >= -5) ... (rdb:1) desc_method :assert # arity: -2 ri for Test::Unit::Assertions#assert ------------------------------------------ Test::Unit::Assertions#assert assert(boolean, message=nil) From gem test-unit-2.0.1 ------------------------------------------------------------------------ Asserts that +boolean+ is not false or nil. Example: assert [1, 2].include?(5) (end ri) def assert(boolean, message = nil) _wrap_assertion do assert_block("assert should not be called with a block.") do (not block_given?) end assert_block(build_message(message, " is not true.", boolean)) { boolean } end end Parameters: assert(boolean, message = nil) Thus, you can look at methods' source/rdocs without having to step into them. Deftly convenient. ========= How to Install===== $ gem install rogerdpack-desc_method or $ gem install rogerdpack-desc_method --source http://gems.github.com if you don't have gems.github.com as a gem source. Usage: >> require 'desc_method' >> Class.desc_method :method_name # class or instance method name ... >> some_instance.desc_method :method_name Other goodies included: Class#desc_class method An example: >> Object.desc_class # outputs descriptive info about that class--RI, method list, etc. >> Object.desc_class :verbose => true # outputs RI, method lists including inherited methods, ancestors, all constants etc. Kernel#methods has been monkey patched to output a "separator" between its inherited and non inherited methods--i.e. >> instance.methods => [:first, :second, :after_this_are_inherited>>>>>, :some_inherited_method, :another_inherited_method] # adds in that separator I'll probably remove that in a future release since it turns out you can just run Kernel#methods(false) for about much. === Thanks === This gem wraps for convenience the functionality of Method#source_location, ruby2ruby, et al, and also contains some code inspiration from manvenu, SourceRef (MBARI), and Python's Method#desc. It also wouldn't be useful without irb and the ruby-debug folks. Thanks! Comments/suggestions welcome rogerdpack on gmail or github