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?

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