is_a? determines whether an expression's runtime type inherits or includes another type. For example:
a = 1 a.is_a?(Int32) # => true a.is_a?(String) # => false a.is_a?(Number) # => true a.is_a?(Int32 | String) # => true
It is a pseudo-method because the compiler knows about it and it can affect type information, as explained in if var.is_a?(...). Also, it accepts a type that must be known at compile-time as its argument.