ACC
ACC

Reputation: 2560

Check type of an instance in ruby

I am debugging an application in which I need to check if the resource class of a DNS query is of type IN. Here is what I discovered:

[6] pry(#<DNS::Server>)> resource_class
=> Resolv::DNS::Resource::IN::A
[7] pry(#<DNS::Server>)> resource_class.inspect
=> "Resolv::DNS::Resource::IN::A"
[8] pry(#<DNS::Server>)> resource_class.class.name
=> "Class"
[9] pry(#<DNS::Server>)> resource_class.kind_of? Class
=> true
[10] pry(#<DNS::Server>)> resource_class.kind_of? Resolv::DNS::Resource::IN::A
=> false
[11] pry(#<DNS::Server>)> resource_class.instance_of? Class
=> true
[12] pry(#<DNS::Server>)> resource_class.instance_of? Resolv::DNS::Resource::IN::A
=> false
[13] pry(#<DNS::Server>)> resource_class.is_a? Class
=> true
[14] pry(#<DNS::Server>)> resource_class.is_a? Resolv::DNS::Resource::IN::A
=> false

I was trying to check using resource_class.instance_of? Resolv::DNS::Resource::IN::A which is not working. How do I check this?

Upvotes: 1

Views: 61

Answers (1)

Amadan
Amadan

Reputation: 198324

Your resource_class is a class. It is not an instance of Resolv::DNS::Resource::IN::A; it is Resolv::DNS::Resource::IN::A. Thus, simple comparison will suffice:

resource_class == Resolv::DNS::Resource::IN::A

Upvotes: 3

Related Questions