On 9/30/2010 2:15 PM, Stefan Salewski wrote:
> In Ruby we can add new methods to existing classes.
> How can we ensure that the name of our new method does not already
> exists -- I do not want to overwrite an existing method by accident. I
> think there exists a way to list all currently existing methods of a
> class, but the solution should work in future too( e.g. for Ruby 3.0
> when predefined classes may have more predefined methods): I want
> something like
> 
> class String
>   def very_useful_method
>     if already_defined(this_method)
>       puts 'We are overwriting an existing method by accident'
>       Process.exit
>     end
>   end
> end

This should do the trick:

class String
  unless method_defined?(:my_method) then
    def my_method
    end
  else
    puts 'We tried to overwrite an existing method'
    Process.exit
  end
end


-Jeremy