Ruby 4.0 リファレンスマニュアル

instance method Object#inspect

inspect -> String[permalink][rdoc][edit]

オブジェクトを人間が読める形式に変換した文字列を返します。

組み込み関数 Kernel?.p は、このメソッドの結果を使用してオブジェクトを表示します。

p [ 1, 2, 3..4, 'five' ].inspect # => "[1, 2, 3..4, \"five\"]"
p Time.new.inspect               # => "2008-03-08 19:43:39 +0900"

inspect メソッドをオーバーライドしなかった場合、クラス名とインスタンス変数の名前、値の組を元にした文字列を返します。

class Foo
end
p Foo.new.inspect                # => "#<Foo:0x0300c868>"

class Bar
  def initialize
    @bar = 1
  end
end
p Bar.new.inspect                # => "#<Bar:0x0300c868 @bar=1>"

inspect をオーバーライドしていない場合、 instance_variables_to_inspect を定義することで、inspect の出力に含めるインスタンス変数を制御できます。このメソッドは、表示したいインスタンス変数名を Symbol の配列で返すようにします(デフォルトの実装は nil を返し、その場合は全てのインスタンス変数が表示されます)。パスワードなどの機密情報を持つインスタンス変数を inspect の出力(ログなど)に含めたくない場合に利用できます。

class Foo
  def initialize
    @a = 1
    @password = "secret"
    @b = 2
  end
  private def instance_variables_to_inspect = [:@a, :@b]
end
p Foo.new.inspect                # => "#<Foo:0x0300c868 @a=1, @b=2>"

[SEE_ALSO] Kernel?.p