`rescue NoMethodError` always scares the crap out of me because it's super-prone to silencing legit issues.  For example, maybe the superclass method is defined but internally it calls an undefined method on some object.  This will raise a `NoMethodError` that should be surfaced but will be silenced with your method.  Checking `defined?(super)`, on the other hand, is a completely safe way to only delegate up the ancestor chain if an ancestor has an implementation of that method.