Hash#deleteが破壊的メソッドのせいで String#deleteが非破壊だと忘れてしまうことが良くあるので、String#removeのようなエイリアス関数を作ろうかと思ったのですが、既に存在した場合無駄なので特定のメソッドのエイリアスが現在の環境で既に用意されているかどうかを調べる方法が知りたいです。

今はGoogleで検索したりドキュメントでそれらしい関数がないか探しているのですが、もっと明確に特定のメソッドのエイリアス一覧を表示する方法はなにかないでしょうか?

追記

@sakuro さんに教えて頂いた Object.instance_method を使って書いてみました。

class Object
  def self.method_aliases
    instance_methods.group_by do |i|
      instance_method(i)
    end.select { |k, v| v.size > 1 }.map { |k, v| v }
  end

  def self.aliases_of(method_symbol)
    method_aliases&.find { |i| i.include?(method_symbol) }&.reject { |i| i == method_symbol }
  end
end

Hash.aliases_of(:has_key?)
# => [:include?, :key?, :member? ]

ただ、Rails環境で試してみた所 [:byebug,:debugger][:awesome_inspect, :ai]など一部の gemで拡張してるメソッドが拾えないようです。group_byの比較演算子の問題でしょうか…?