Verifique com elegância o tipo booleano nos trilhos

Como um desenvolvedor júnior de rails, uma das primeiras coisas que me pareceram contra-intuitivas foi que eu não poderia simplesmente verificar um tipo booleano da mesma forma que faria com qualquer outra classe.

Embora eu pudesse perguntar a um valor se ele é um número inteiro de várias maneiras:

value.integer?
value.is_a? Integer
#or synonymously
value.kind_of? Integer

Eu não poderia da mesma maneira perguntar um valor se fosse um booleano:

value.boolean?
value.is_a? Boolean
value.kind_of? Boolean

Recentemente, eu estava resolvendo um problema maior e precisava saber se meu valor era de fato um booleano – uma vez que o tíquete atingiu a revisão de código, um colega de trabalho deixou um comentário do tipo
“Acho isso inteligente … certamente não é estúpido , certo? Eu não vi isso antes. “

Pessoalmente, a solução veio rapidamente, no entanto, devido à reação dele, pensei que algumas pessoas poderiam se beneficiar com o que considero uma solução bastante inteligente:

!!value == value

Então, quais são os seus pensamentos, mundo? Inteligente; ou estúpido?

Outra solução, mais legível (portanto, provavelmente mais semelhante a rubi) e igualmente eficaz é:

[true, false].include? value

Qualquer um deles seria uma grande adição de utilitário:

def is_boolean?(value)
[true, false].include? value
end

alias_method
(:is_bool?, :is_boolean?)
alias_method
(:boolean?, :is_boolean?)