Hashのキーをリネームしたかったけどデフォルトのメソッドはないようなので書いた

class Hash
  def rename_key(old:, new:)
    return unless has_key?(old)
    return if has_key?(new)
    self[new] = self.delete(old)
    self
  end
end

使い方

h = {a: 1, b: 2}
{
    :a => 1,
    :b => 2
}
[92] pry(main)> h.rename_key(old: :a, new: :c)
{
    :b => 2,
    :c => 1
}

変更前のキーが存在しない時と、変更後のキーが存在する時は何もしない。

実際の入れ替え処理はself[new] = self.delete(old)だけで終わってます。

参考

http://kmckelvin.com/blog/2014/06/renaming-items-in-a-ruby-hash