class Object
def acts_like?(duck)
x.acts_like?(:date) to do duck-type-safe comparisons, since classes that
acts_like_time?. As a result, we can do x.acts_like?(:time) and
to define an acts_like_date? method, and extends Time to define
A duck-type assistant method. For example, Active Support extends Date
def acts_like?(duck) case duck when :time respond_to? :acts_like_time? when :date respond_to? :acts_like_date? when :string respond_to? :acts_like_string? else respond_to? :"acts_like_#{duck}?" end end