Ruby は #!= 内で #== が呼ばれる

#!= 内で #== が呼ばれているため、#== を再定義すると #!= にも影響が及びます。

[コード]

class X
    def == other
        p "=="
        true
    end
end

X.new == "" # => true
X.new != "" # => false

[出力]

"=="
"=="

#== に副作用があるとちょっと注意する必要があるかも。