Joe Bowers wrote:
> This looks like prime .inject territory
> 
>   enum.inject([]) do |l,obj| 
>     (l << obj.a_method) if obj.respond_to? :a_method
>   end

Wonderful!

Now, what if I wanted to generalize it? That is, a method on Enumerable 
  that returns an array of the results of calling a a given block with 
each item in the array, excluding the items that do not respond to that 
method.

This is what I've got:

   module Enumerable
     # need a better name...
     def collect_x
       collect do |obj|
         begin
           yield obj
         rescue NoMethodError
           nil
         end
       end.compact
     end
   end

Though it's still verbose...