「BasicObject#!=」は実装上、「BasicObject#==」を否定した結果を返します。
公式をみると、
デフォルトでは self == other を評価した後に結果を論理否定して返します。 このため、サブクラスで BasicObject#== を再定義しても != とは自動的に整合性が とれるようになっています。
つまり
def !=(other) !(self.equal?(ohter)) end
といった感じの実装となっているわけです。
そのため、「equal?」およびそのエイリアスの「==」を定義してあげれば、
自動的にその否定となるわけです。
コーディング規約上、否定形はunlessを使う事が推奨されています。
上のルールに従えば
something if hoge != fuga
は
something unless hoge == fuga
または
something unless hoge.equal?(fuga)
と書けばよい事になります。