I thought frozen objects could not be unfrozen later

In The ActiveSupport memory_store.rb

@@@
def write(name, value, options = nil)
super
@data[name] = (value.duplicable? ? value.dup : value).freeze
end
@@@

This function freezes everything that gets written, according to the
ruby doc once an object is frozen it cannot be unfrozen later:
http://www.ruby-doc.org/core/classes/Object.html#M000356

so when I read an object from cache

@@@
def read(name, options = nil)
super
@data[name]
end
@@@

how am I able to then write to it since its been frozen? Sorry I
really don’t get this and been trying to understand it since the patch
was posted.

Thanks

anyone?

On Wed, Oct 21, 2009 at 2:43 AM, codex1 [email protected] wrote:

  end
    super
    @data[name]
  end

@@@

how am I able to then write to it since its been frozen? Sorry I
really don’t get this and been trying to understand it since the patch
was posted.

Thanks

Where’s the actual test case that invalidates this code?

-Conrad

On Wed, Oct 21, 2009 at 3:31 AM, Conrad T. [email protected]
wrote:

    super
    @data[name] = (value.duplicable? ? value.dup : value).freeze
  end

@@@

The above is freezing the value and not the container, @data, for the
value.
You can simply try this for yourself using irb.

-Conrad

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs