From: Michael Gorsuch Date: 2006-09-04T11:39:50+09:00 Subject: Exploring Metaprogramming ------=_Part_40596_25670632.1157327766955 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I've got some downtime this weekend, so I'm pooring over various examples of metaprogramming w/ Ruby. I really like _why's example regarding Dwemthy, but am curious as to how to achieve my end. The article in question is here: http://poignantguide.net/ruby/chapter-6.html#section3 _why's method allows us to build 'traits' for the character (by calling the 'trait' class method), and the meta programming behind the scenes builds an 'initialize' instance method for the class. What if I want to build a second method called 'command'? It should place the argument in an array that can be referenced later. It will need to also build an initialize method for my class, but one of them will have to be overwritten. Does anyone have any smart ways to combine or chain these two initialize methods together? I ultimately want to do something like this: class Dragon < Creature traits :life life 100 command :fly def fly puts "I am flying..." end end After an instance is created, it will contain the instance variable 'commands', which is an array holding the symbol 'fly'. Does anyone have any ideas? In the end, I'd be adding more and more of these commands to my DSL. This is a DSL, right? ;-) ------=_Part_40596_25670632.1157327766955--