From: shyouhei@... Date: 2016-04-20T01:35:08+00:00 Subject: [ruby-core:75033] [Ruby trunk Feature#12300] Allow Object#clone to take freeze: false keyword argument to not freeze the clone Issue #12300 has been updated by Shyouhei Urabe. Sounds much simpler than the previous one to understand what is happening. Also it seems backwards-compatible. Given the needs of this kind, I'd like to +1. ---------------------------------------- Feature #12300: Allow Object#clone to take freeze: false keyword argument to not freeze the clone https://bugs.ruby-lang.org/issues/12300#change-58159 * Author: Jeremy Evans * Status: Open * Priority: Normal * Assignee: ---------------------------------------- This allows Object#clone to not freeze the resulting object, which fixes a long standing problem in ruby in that you cannot get an unfrozen copy of an object that includes a copy of the object's singleton class. Previously, clone always returned a frozen object, and dup did not copy the singleton class. This adds the ability to get an unfrozen clone of an object that includes a copy of the object's singleton class, allowing further modification. Among other things, this allows the ability to create modified clones of objects that have singleton classes: ~~~ class A def clone(arg) obj = super(freeze: false) # modify obj based on arg obj.freeze end end ~~~ I think this is a simpler and more flexible approach to the same problem that #12092 tries to solve. ---Files-------------------------------- 0001-Allow-clone-to-take-freeze-false-keyword-argument-to.patch (3.93 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: