I have no idea what all that's supposed to do.
In Ruby you have methods (and Procs), but focusing on the
methods--they are invoked by a message. Normally this is done
magically for you.  my_obj.my_method sends "my_method" to "my_obj".

Play with it in IRB:

class Me
  def name
    "Paul"
  end
end
m = Me.new
m.name           # => "Paul"
m.send :name # => "Paul"

class LetSomeRun
  def initialize
    @runnable = %w/first second/
  end
  def first; puts "running first" end
  def second; puts "running second" end
  def run (m)
    if @runnable.include? m
      send m
    else
      raise "Can't run that!"
    end
  end
end

r = LetSomeRun.new
r.run "first"
r.run "oops"   # oops :(

You could also take a slightly different approach using Proc objects;
lambda works similar to how `sub {}` works in Perl.
x = lambda {|name| puts "hello #{name}!"}
x.call "fred"

So...

class Runnable2
  def initialize
    @runnable = {
      "first" => lambda {|this, *args| this.run "second", "hello!"},
      "second" => lambda {|this, *args| puts args.first}
     }
  end
  def run (m, *args)
    @runnable.include? m and @runnable[m].call self, *args
  end
end
Runnable2.new.run "first"

I'm not exactly sure if this answers your question but, enjoy.

Paul