I am feeling that following solution
class Fixnum
  def +(x)
    self + x + 1
  end
end
should not work, since + will be called recursively. 
I am feeling that following solution
class Fixnum
  def +(x)
    self + x + 1
  end
end
should not work, since + will be called recursively. 
 
    
     
    
    Using alias to store the original + like this works:
class Fixnum
  alias old_plus +
  def +(x)
    old_plus(x).succ
  end
end
 
    
    Another way is to prepend a module:
module PlusOne
  def +(x)
    super.succ
  end
end
Fixnum.prepend(PlusOne)
1 + 1 #=> 3
