nil != false

nilは偽になりますが、nil == falseではありません。

if nil == false
  puts "nil == false"
else
  puts "nil != false"   #=> nil != false
end

でも、無理矢理nilの==を再定義してしまうと、nil == falseになってしまいます。…どこかで矛盾が起きるかもしれませんけれど。

def nil.==(x)
  if x == false
    true
  elsif x == nil
    true
  else
    false
  end
end

if nil == false
  puts "nil == false"   #=> nil == false
else
  puts "nil != false"
end