Difference between revisions from 2012/12/06 10:59 and 2012/09/12 11:26."Hook methods are methods that are called from the backend in reaction to something you do."
* BasicObject#initialize
* BasicObject#method_missing
* BasicObject#singleton_method_added
* BasicObject#singleton_method_removed
* BasicObject#singleton_method_undefined
* Kernel#respond_to_missing?
* Module#extended
* Module#included
* Module#method_added
* Module#method_removed
* Module#method_undefined
* Module#const_missing
* Class#inherited
Ruby 1.9 also adds intitialize_(copy|clone|dup) — See: http://www.jonathanleighton.com/articles/2011/initialize_clone-initialize_dup-and-initialize_copy-in-ruby/
! More info...
!! BasicObject#initialize
Signature: initialize()
Returns a new BasicObject. Arguments are ignored.
!! BasicObject#method_missing
Signature: method_missing(*arg1)
Invoked by Ruby when obj is sent a message it cannot handle.
symbol is the symbol for the method called, and args
are any arguments that were passed to it. By default, the interpreter
raises an error when this method is called. However, it is possible
to override the method to provide more dynamic behavior.
If it is decided that a particular method should not be handled, then
super should be called, so that ancestors can pick up the
missing method.
The example below creates
a class Roman, which responds to methods with names
consisting of roman numerals, returning the corresponding integer
values.
{{ class Roman
def romanToInt(str)
# ...
end
def method_missing(methId)
str = methId.id2name
romanToInt(str)
end
end
r = Roman.new
r.iv #=> 4
r.xxiii #=> 23
r.mm #=> 2000
}}
!! BasicObject#singleton_method_added
Signature: singleton_method_added(arg1)
Invoked as a callback whenever a singleton method is added to the
receiver.
{{ module Chatty
def Chatty.singleton_method_added(id)
puts "Adding #{id.id2name}"
end
def self.one() end
def two() end
def Chatty.three() end
end
produces:
Adding singleton_method_added
Adding one
Adding three
}}
!! BasicObject#singleton_method_removed
Signature: singleton_method_removed(arg1)
Invoked as a callback whenever a singleton method is removed from
the receiver.
{{ module Chatty
def Chatty.singleton_method_removed(id)
puts "Removing #{id.id2name}"
end
def self.one() end
def two() end
def Chatty.three() end
class << self
remove_method :three
remove_method :one
end
end
produces:
Removing three
Removing one
}}
!! BasicObject#singleton_method_undefined
Signature: singleton_method_undefined(arg1)
Invoked as a callback whenever a singleton method is undefined in
the receiver.
{{ module Chatty
def Chatty.singleton_method_undefined(id)
puts "Undefining #{id.id2name}"
end
def Chatty.one() end
class << self
undef_method(:one)
end
end
produces:
Undefining one
}}
!! Kernel#respond_to_missing?
Signature: respond_to_missing?(arg1, arg2)
Hook method to return whether the _obj_ can respond to _id_ method
or not.
See #respond_to?.
!! Module#extended
No docs from pry - I guess: https://www.google.com/search?q=ruby%20Module%23extended
!! Module#included
Signature: included(arg1)
Callback invoked whenever the receiver is included in another
module or class. This should be used in preference to
Module.append_features</tt> if your code wants to perform some
action when a module is included in another.
{{ module A
def A.included(mod)
puts "#{self} included in #{mod}"
end
end
module Enumerable
include A
end
Another example: http://blog.reenhanced.com/post/31397796389/log-all-calls-to-instance-methods-of-a-ruby-class
Another example: http://blog.reenhanced.com/post/31397796389/log-all-calls-to-instance-methods-of-a-ruby-class
!! Module#method_added
No docs from pry - I guess: https://www.google.com/search?q=ruby%20Module%23method_added
!! Module#method_removed
No docs from pry - I guess: https://www.google.com/search?q=ruby%20Module%23method_removed
!! Module#method_undefined
No docs from pry - I guess: https://www.google.com/search?q=ruby%20Module%23method_undefined
!! Module#const_missing
'Really' no docs from pry. Still try: https://www.google.com/search?q=ruby%20Module%23const_missing
!! Class#inherited
Signature: inherited(arg1)
Callback invoked whenever a subclass of the current class is created.
Example:
{{ class Foo
def self.inherited(subclass)
puts "New subclass: #{subclass}"
end
end
class Bar < Foo
end
class Baz < Bar
end
produces:
New subclass: Bar
New subclass: Baz
}}
! Thanks
To Hanmac of #ruby @ freenode!
! Regenerating...
(So I can rework this as I get more info...)
Script is: http://panoptic.com/rking/doc/hookmethods-doc.rb
Use in vim as: :map <f5> :w<cr>:!./% > /tmp/doc-out.wiki<cr>
Then slurp under Pentadactyl+gvim with: :/^! More/+2,/^! Thanks/-2d|r /tmp/doc-out.wiki