[ruby-core:24967] [ANN] Initial release of the desc_method gem--a "run time RI for methods"

I am pleased to announce the release of desc_method.

A "run time RI for methods", this gem allows you to query for
information about objects' methods within irb or a ruby-debug prompt.
It reveals everything known about the method. This includes source,
ri, arity, rdoc comments (on 1.9), etc. where available

For me it has proved quite useful, and I wouldn't do a ruby-debug
session without it--try it--you might really like it.

Examples:

class A;

    def go(a); end;
   end

A.desc_method :go

#<UnboundMethod: A#go> arity: 1
ri for A#go
Nothing known about A
(end ri)
def go(a)
  # do nothing
end
Parameters: go(a)

File.desc_method :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)
#<Method: File.delete> arity: -1
appears to be a c method
#parameters signature: delete( [[:rest]] )

Or (my favorite) using it in a debug session:
(rdb:1) l=
...
=> 74 assert(assigns['order'].order_line_items.map(:unit_price).min >= -5)
...
(rdb:1) desc_method :assert
#<Method: StoreControllerTest(Test::Unit::Assertions)#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)
(rdb:1)

========= 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_object.desc_method :method_name

...

Other goodies also included:
Class#desc_class

Examples:

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
This 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

Though I'll probably remove that in a future release since it turns
out you can just run Kernel#methods(false) for about as much
usefulness.

=== 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

hm, is that just me, or why am i getting this strange error?

ERROR: Error installing rogerdpack-desc_method:
    ruby2ruby requires ruby_parser (~> 2.0, runtime)

never had that before...
Other stuff seems to install just fine.

ERROR: Error installing rogerdpack-desc_method:
ruby2ruby requires ruby_parser (~> 2.0, runtime)

never had that before...
Other stuff seems to install just fine.

Yes I get that too, for some reason. Very weird.
The work-around for now is

$ gem install ruby_parser
$ gem install ruby2ruby -v1.1.9
$ gem install rogerdpack-desc_method

until I can figure out what's going on.
Thanks!
-r

Installing gems from GitHub that depends on gems from RubyForge (ala:
cross source dependencies) hasn't been implemented in RubyGems

Patches are welcome :wink:

Cheers,

···

On Aug 18, 1:20 pm, Fabian Streitel <karottenre...@googlemail.com> wrote:

[Note: parts of this message were removed to make it a legal post.]

hm, is that just me, or why am i getting this strange error?

ERROR: Error installing rogerdpack-desc_method:
ruby2ruby requires ruby_parser (~> 2.0, runtime)

never had that before...

--
Luis Lavena