brianjlandau (owner)

Revisions

gist: 179791 Download_button fork
public
Description:
Deep freeze for enumerable objects in Ruby
Public Clone URL: git://gist.github.com/179791.git
Embed All Files: show embed
deep_freeze.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
module Enumerable
  def deep_freeze
    unless self.is_a? String
      frozen = self.dup.each do |key, value|
        if (value.is_a?(Enumerable) && !value.is_a?(String))
          value.deep_freeze
        else
          value.freeze
        end
      end
      self.replace(frozen)
    end
    self.freeze
  end
end
 
class Hash
  def deep_freeze
    frozen = self.dup.each do |key, value|
      if (value.is_a?(Enumerable) && !value.is_a?(String))
        value.deep_freeze
      else
        value.freeze
      end
    end
    self.replace(frozen)
    self.freeze
  end
end