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:

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?

anyone?

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

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

-Conrad

anyone?

In The ActiveSupport memory_store.rb

@@@

def write(name, value, options = nil)

    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