Typical I solved inspiration struck after I hit send:

def X(text, todo, *args)
  text.send(todo, *args)
end

puts X("abcdefgh", 'downcase')
puts X("abcdefgh", 'gsub', /[aeiouy]/, "_")

If only I had waited a few moments more :(

Any other ideas gratefully received.