Get the class name of the class who called the parent instance method

Is there a way for me to do that on ruby ?

class Foo
def self.class_name
self.class.name
end
end

class Bar < Foo
end

class Tar < Foo
end

Bar.class_name
= ‘Bar’

Tar.class_name
= ‘Tar’

I want to get the class name of the class who called the instance method
from the parent class.

I tried the code above and it keeps getting me ‘Class’ as the result.

Is that possible in ruby ?

[]`s

===================
Alexandre Mondaini Calvão

Nossa recompensa se encontra no esforço e não no resultado. Um esforço
total é uma vitória completa
.” [Ghandi]

Is not instance method, is class method… My bad

===================
Alexandre Mondaini Calvão

Nossa recompensa se encontra no esforço e não no resultado. Um esforço
total é uma vitória completa
.” [Ghandi]

2014-10-10 0:17 GMT-03:00 Alexandre Calvão [email protected]:

You might want something like this.

class Foo
end

Foo.instance_eval do
def class_name
self.name
end
end

class Bar < Foo
end

class Tar < Foo
end

puts Foo.class_name
#=> Foo

puts Bar.class_name
#=> Bar

puts Tar.class_name
#=> Tar

Thanks Mike.

===================
Alexandre Mondaini Calvão

Nossa recompensa se encontra no esforço e não no resultado. Um esforço
total é uma vitória completa
.” [Ghandi]

2014-10-10 13:31 GMT-03:00 Mike [email protected]:

On 2014-Oct-10, at 12:31 , Mike [email protected] wrote:

end
#=> Foo
Is not instance method, is class method… My bad
class Foo

Is that possible in ruby ?

[]`s

===================
Alexandre Mondaini Calvo

“Nossa recompensa se encontra no esforo e no no resultado. Um esforo total uma
vitria completa.” [Ghandi]

Why do anything fancy? An instance know which class it is. Just ask for
the .class and then get that Class’s .name.

irb2.1.3> class Foo; end
#2.1.3 => nil
irb2.1.3> class Bar < Foo; end
#2.1.3 => nil
irb2.1.3> class Baz < Foo; end
#2.1.3 => nil
irb2.1.3> foo = Foo.new
#2.1.3 => #Foo:0x007f98940cb528
irb2.1.3> foo.class.name
#2.1.3 => “Foo”
irb2.1.3> bar = Bar.new
#2.1.3 => #Bar:0x007f98940b55c0
irb2.1.3> bar.class.name
#2.1.3 => “Bar”
irb2.1.3> baz = Baz.new
#2.1.3 => #Baz:0x007f98940b38d8
irb2.1.3> baz.class.name
#2.1.3 => “Baz”

-Rob