Object.class_eval do unless method_defined?(:yield_self) define_method(:yield_self) do |&block| return block.call(self) if block out = self out = [self] unless self.is_a?(Enumerable) out.each end end end