Module: IceNine

Defined in:
lib/ice_nine.rb,
lib/ice_nine/freezer.rb,
lib/ice_nine/version.rb,
lib/ice_nine/freezer/hash.rb,
lib/ice_nine/freezer/array.rb,
lib/ice_nine/freezer/range.rb,
lib/ice_nine/freezer/module.rb,
lib/ice_nine/freezer/object.rb,
lib/ice_nine/freezer/struct.rb,
lib/ice_nine/freezer/symbol.rb,
lib/ice_nine/core_ext/object.rb,
lib/ice_nine/freezer/numeric.rb,
lib/ice_nine/freezer/rubinius.rb,
lib/ice_nine/freezer/nil_class.rb,
lib/ice_nine/freezer/no_freeze.rb,
lib/ice_nine/freezer/hash/state.rb,
lib/ice_nine/freezer/true_class.rb,
lib/ice_nine/freezer/false_class.rb,
lib/ice_nine/support/recursion_guard.rb

Overview

Base IceNine module

Defined Under Namespace

Modules: CoreExt Classes: Freezer, RecursionGuard

Constant Summary collapse

VERSION =

Unreleased gem version

'0.10.0'.freeze

Class Method Summary collapse

Class Method Details

.deep_freeze(object, recursion_guard = RecursionGuard.new) ⇒ Object

Deep Freeze an object

Examples:

object = IceNine.deep_freeze(object)

Parameters:

  • object (Object)
  • recursion_guard (RecursionGuard) (defaults to: RecursionGuard.new)

Returns:

  • (Object)


40
41
42
43
44
45
# File 'lib/ice_nine.rb', line 40

def self.deep_freeze(object, recursion_guard = RecursionGuard.new)
  return object if object.frozen?
  recursion_guard.guard(object.__id__) do
    Freezer[object.class].deep_freeze(object, recursion_guard)
  end
end