From: Robert Klemme Date: 2010-02-04T17:15:14+09:00 Subject: Re: Dynamic Class Instance? On 03.02.2010 20:13, Marnen Laibow-Koser wrote: > Kale Davis wrote: >> I am creating a Ruby script that basically: >> 1) Has a prompt that gets a command string (ex. 'edit user1 15') >> 2) Parses the string >> 3) Runs specific command (like 'edit' or 'new') >> 4) Repeats >> >> From a functional level I know how to make this work, but how do I make >> it dynamic in the sense that another user could easily add their own >> commands by adding a new subclass? >> >> I was thinking something like this: >> >> class Update < Command >> ... >> end >> >> The problem is I don’t know how to dynamically create a new 'Update' >> instance if that is the command string (ie 'update user')? I know how to >> call a method using 'send' and I guess that would be another approach >> maybe, but is there something for classes? > > Classes are objects too. They respond to Object#send. For that he first needs the class instance. Something like cl = Object.const_get("Update") will do. Then you can do whatever you want to do with it. In this case all classes should probably share a common interface method, e.g. class Command def execute(*args) raise "Not implemented" end end class Update < Command def execute(*a) ... end end Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/