> This is a rather peculiar bug I stumbled across.  The basic issue is that once `nil` has been frozen, there is no way to access an unfrozen instance of nil.
> 
>  nil.frozen?    => false
>  nil.freeze
>  nil.frozen?    => true
> 
> I say this is a peculiar bug because generally it doesn't matter if `nil` is frozen or not (since it is basically frozen even if not explicitly defined as such).  However, since Ruby is based upon duck typing, you might run into a scenario like the following:
> 
>  def get(cache_key)
>    content = Rails.cache.read(cache_key)
>    content.frozen? ? content.dup : content
>  end
> 
> If I call the above method and the cache key exists, `content` is a frozen string, which I then `dup` to get an unfrozen copy.  If I call the above method and the cache key does NOT exist, `content` is a frozen `nil`, which it then attempts to `dup` unsuccessfully since a NilClass instance cannot be duped.

Hmm...
I don't think nil is mutable logically. Why can't we make nil is frozen at beginning?