Developing Storm

Tuesday, December 20, 2005
Here's a nice concise presentation by Jim Weirich on the cool bits of Ruby.

I love this part that demonstrates the message based behavior of Ruby.

class VCR
  def initialize
    @messages = []
  end
  def method_missing(method, *args, &block)
    @messages << [method, args, block]
  end
  def play_back_to(obj)
    @messages.each do |method, args, block|
      obj.send(method, *args, &block)
    end
  end
end

vcr = VCR.new
vcr.sub!(/Java/) { "Ruby" }
vcr.upcase!
vcr[11,5] = "Universe"
vcr << "!"

string = "Hello Java World"
puts string

vcr.play_back_to(string)
puts string

This prints out:

Hello Java World
HELLO RUBY Universe!

This is like nuke powered dynamic proxies. My brain swirls just thinking of the possibilities.


[ 1 comment ]