How to simplify the following code with respond_to?

I have following code.
[code]
class Person
  def eat
    puts "I am eating"
  end
  def sleep
    puts "I am going to bed"
  end
  def laugh
    puts "Wahahaha"
  end
  def talk
    puts "...."
  end
end
little_boy = Person.new
puts 'Input an action'
request = gets.chomp
if request == 'eat'
  little_boy.eat
elsif request == 'sleep'
  little_boy.sleep
elsif request == 'laugh'
  little_boy.laugh
elsif request == 'talk'
  little_boy.talk
else
  puts 'Input error'
end
[/code]

Now I would like to use method: respond_to? and send to simplify it.How
would it be?

class Person

  ...

  def run action
    eval action.to_s # calls a sttring as if it were a method
  end
end

little_boy = Person.new

puts 'Input an action'
request = gets.chomp

if little_boy.respond_to?( request )
  little_boy.run request
else
  puts "invalid action #{request}"
end

hope it helps

j

ps: All this functionality works for any ruby object, not only rails
models.

class Person

...

def run action
   eval action.to_s # calls a sttring as if it were a method
end
end

If you're just going to call a method you're better off just calling
send

Fred.