It'th wabbit theathon
In general, it is bad practice to perform string substitutions in multiple passes, feeding the output back of one substitution into another round of substitutions.  (Here is an example of how multiple-pass substitutions can lead to incorrect results.)  In this case, it happens to be safe, since none of the outputs overlap with any of the patterns, but I would still recommend a different approach.  Fortunately, Ruby makes it easy to do multiple substitutions the right way, with #gsub(pattern, hash).

return is implicit in Ruby.  The last expression evaluated is automatically returned, and everything is an expression.

The standard is to use two spaces of indentation, not three.

def lisp(input)
  input.downcase.gsub(/er|[lrs]/,
    'er' =&gt; 'uh',
    'l'  =&gt; 'w',
    'r'  =&gt; 'w',
    's'  =&gt; 'th',
  ).capitalize
end