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
Con
(Con)
3
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
Con
(Con)
4
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