From: ES Date: 2005-03-13T04:31:37+09:00 Subject: Re: Ruby black magic? Meta Programming On Sat, March 12, 2005 7:11 pm, Tom Willis said: > My first exposure to Ruby was from Jim, and his "10 things every java > programmer should know about ruby" presentation. > > Anyway, I probably shouldn't even be thinking about this kind of stuff > yet, but one thing in the presentation that I dug a lot was the use of > overriding Kernel#method_missing to queue messages and play them back > in order. > > Anyway, I want to know what other kind of cool,i guess I'll call it > metaprogramming, can be done in ruby. > > > For example, I remember reading something about Eiffel having the > ability to declare pre and post conditions for method calls on > objects, essentially bringing this criteria in as part of the > interface. Can something like this be done in Ruby? I'm assuming so, > but for some reason my google hits keep referring me to Pyhon's > Metaclass things, go figure. > > Anyone got a link? Currently pre/postconditions are proposed for Ruby 2.0, see\ http://www.rubygarden.org/ruby?Rite You can achieve the same effect by creating a meta for something like def_pre :methodname, def_post :methodname with associated blocks. Then alias the actual :methodname, make the pre block respond to :methodname; pre executes its block and then calls :methodname, after which post block is called. > Thomas G. Willis E