On Jan 5, 2011, at 08:23 , Perry Smith wrote:

> I'm trying to debug a problem I have with YAML.  When I do:

Why not tell us about the real problem and not the symptom?

> puts "#{foo.class}"
>=20
> I get (for example) Xyz
>=20
> but I know that foo is not really of class Xyz.  I think it is an
> YAML::Object.  The reason this happens is because to_s has been
> overridden.

Are you sure?

> How can I get the real name of the class of an object?
>=20
> I think this is what YAML::Object is doing:
>=20
> #! /usr/bin/env ruby
>=20
> class Xyz
>  def self.to_s
>    "dog"
>  end
> end
>=20
> x =3D Xyz.new
> puts "#{x.class}"
>=20
> I get "dog" instead of Xyz.  How can I get Xyz in this case?

You can try x.class.name instead... Or you can try to restore the real =
name with:

  x.class.send :remove_method, :to_s