ruby のプライベートメソッドにアクセスする方法

その名の通りprivateなmethodなので、レシーバーから呼び出せないが、sendを使えば呼ぶことができる。 他にもinstance_evalを使っても呼ぶことができる。

通常のコードでは当然使ってはいけないが、テストなどで重宝する。

class C
  private
  
  def private_method
    "private_method"
  end
end

puts C.new.send(:private_method) # => private_method
puts C.new.instance_eval{ private_method } # => private_method

stackoverflow.com