This blog is part of our Ruby 2.4 series.

Prior to Ruby 2.4, if we were to dup an Integer , it would fail with a TypeError .

> 1 . dup TypeError : can 't dup Fixnum from (irb):1:in `dup' from ( irb ): 1

This was confusing because Integer#dup is actually implemented.

> Integer . respond_to? :dup => true

However, if we were to freeze an Integer it would fail silently.

> 1 . freeze => 1

Ruby 2.4 has now included dup-ability for Integer as well.

> 1 . dup => 1

In Ruby, some object types are immediate variables and therefore cannot be duped/cloned. Yet, there was no graceful way of averting the error thrown by the sanity check when we attempt to dup/clone them.