Object methods

Now this won't be new to most experienced Rubyists but this is something that I've learned recently that has been quite helpful. When I'm dealing with these Soap mapping objects I don't always know what I'm getting back. One of the important things I need to know is what sort of attributes may have been mapped. You typically would do this (in irb):

auth.methods

Which yields this:

=> ["[]=", "inspect", "send", "a=", "clone", "public_methods", "__send__", "pretty_print", "equal?", "freeze", "to_yaml_style", "__xmlele", "methods", "instance_eval", "dup", "instance_variables", "extend", "instance_of?", "__add_xmlele_value", "eql?", "to_yaml_properties", "hash", "id", "singleton_methods", "taint", "pretty_print_inspect", "lifetime", "frozen?", "instance_variable_get", "kind_of?", "to_a", "sessionId", "lifetime=", "display", "taguri", "type", "protected_methods", "sessionId=", "method", "==", "taguri=", "===", "instance_variable_set", "is_a?", "to_yaml", "respond_to?", "to_s", "authToken", "pretty_print_instance_variables", "class", "dclone", "tainted?", "=~", "private_methods", "authToken=", "__xmlattr", "__id__", "pretty_print_cycle", "nil?", "untaint", "object_id", "a", "[]"]

Useful but a bit cluttered. Instead you can do this:

auth.methods - Object.methods
=> ["[]=", "a=", "__xmlele", "__add_xmlele_value", "lifetime", "sessionId", "lifetime=", "sessionId=", "authToken", "authToken=", "__xmlattr", "a", "[]"]

Much nicer eh? It strips off all the Object class methods that are present on all objects. In this case I've learned that my new AuthResponse indeed has the sessionId, authToken attributes, which was what I was looking for.

Posted by Marty Haught on Sunday, August 06, 2006

I have not enabled comments for my blog yet. If you'd like to pass on a comment or suggestion, please email me at mghaught __at__ gmail -dot- com.