Just some notes on reflection and introspection in Ruby

someString = 'http://google.com'

# Print the object's class, methods, superclass and
# ancestors (mixins and superclasses),
p someString.class
p someString.methods
p someString.class.superclass
p someString.class.ancestors

# Print the methods of the String class.
p String.private_instance_methods(false)
p String.public_instance_methods(false)

# Pass true to recurse into parent classes.
p String.public_instance_methods(true)

# Calling instance methods with send().
"Random text".send(:length) # 11
-23.send(:succ) # 22

# Using Method objects and call().
length_method = "Random text".method(:length)
length_method.call # 11

# Another way, using eval().
length_method = %q{"Random text".length}
eval length_method

Check out Distributed Ruby (DRb): it's a very neat, non-fancy way of exposing object methods as remote services.