Created
November 23, 2010 13:07
-
-
Save Bodacious/711725 to your computer and use it in GitHub Desktop.
Example of how to rewrite method_missing and respond_to? in Ruby
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CarPart | |
# does the method name end in _price ? | |
def ghost_method_condition(name) | |
!!name.to_s[/_price$/] | |
end | |
# rewrite method missing if the method matches ghost_method_condition | |
def method_missing(name, *args, &block) | |
super unless ghost_method_condition(name) | |
# do something else... | |
end | |
# rewrite respond_to? to include ghost methods | |
def respond_to?(name, include_private = false) | |
ghost_method_condition(name) || super | |
end | |
end | |
c = CarPart.new | |
puts c.respond_to? :stereo_price |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment