🚀 Big News:Socket Has Acquired Secure Annex.Learn More →
Socket
Book a DemoSign in
Socket

desc_method

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

desc_method

bundlerRubyGems.org
Version
0.1.8
Version published
Maintainers
1
Created
Source

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

For me 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.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) 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)

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

FAQs

Package last updated on 14 Nov 2009

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts