¿Qué es el operador de comparación! = ~ En ruby?

Encontré este operador por casualidad:

ruby-1.9.2-p290 :028 > "abc" !=~ /abc/ => true 

¿Qué es esto? Su comportamiento no se ve como “no coincide”.

Eso no es un operador, son dos operadores escritos para parecerse a un operador.

Desde la tabla de precedencia del operador (de mayor a menor):

[] []=
**
! ~ + - ! ~ + - [unario]
[varias líneas más]
<=> == === != =~ !~

Además, la clase Regexp tiene un operador ~ único :

~ rxp → entero o nulo
Coincidencia: rxp con el contenido de $_ . Equivalente a rxp =~ $_ .

Entonces tu expresión es equivalente a:

 "abc" != (/abc/ =~ $_) 

Y el operador Regexp#=~ (no es lo mismo que el String#=~ más familiar) devuelve un número:

rxp = ~ str → entero o nulo
Match – Matches rxp contra str.

Entonces, se vuelve verdadero como resultado final porque comparar una cadena con un número es falso.

Por ejemplo:

 >> $_ = 'Where is pancakes house?' => "Where is pancakes house?" >> 9 !=~ /pancakes/ => false >> ~ /pancakes/ => 9 

!~ es el inverso de =~ NOT !=~