I find myself needing to run a method and if the method does not exist, have it return itself, instead of nil quite often, I think this change could be used fairly widely.
module Tryable #:nodoc:
def try(*a, &b)
try!(*a, &b) if a.empty? || respond_to?(a.first)
# NEW METHOD def attempt(*a, &b) try(*a, &b) || self end