From: alexey.muranov@... Date: 2014-06-15T14:12:33+00:00 Subject: [ruby-core:63182] [ruby-trunk - Feature #2509] Recursive freezing? Issue #2509 has been updated by Alexey Muranov. I have thought of the following solution: add simultaneously `Object#deep_freeze` and `Object#insulated?`. If `obj.insulated?` is `false`, `obj.deep_freeze` (or `deep_freeze!` by the way?) should raise an error. ---------------------------------------- Feature #2509: Recursive freezing? https://bugs.ruby-lang.org/issues/2509#change-47235 * Author: Marc-Andre Lafortune * Status: Rejected * Priority: Normal * Assignee: Yukihiro Matsumoto * Category: core * Target version: next minor ---------------------------------------- =begin I like freezing my constants, config files I read, etc... I believe it is the typical use case for #freeze. In all theses cases, what I really want to do is freeze everything. There is often no easy way to do this (e.g. for config files), or else one must explicitly call freeze a bunch of times, like: DEFAULT_SEND_FILE_OPTIONS = { :type => 'application/octet-stream'.freeze, :disposition => 'attachment'.freeze, }.freeze It would be very nice if there was an easy way to freeze recursively arrays, hashes, etc... A solution would be for #freeze to accept a level argument (similar to flatten, but the default being 1), or alternatively a boolean one (recursive = false). Should I write a patch for this feature request? Thanks, Marc-Andr�� =end ---Files-------------------------------- deep_freeze.pdf (90.8 KB) -- https://bugs.ruby-lang.org/