Module: Grape::Util::DeepFreeze
- Defined in:
- lib/grape/util/deep_freeze.rb
Class Method Summary collapse
-
.deep_freeze(obj) ⇒ Object
Recursively freezes Hash (keys and values), Array (elements), and String objects.
Class Method Details
.deep_freeze(obj) ⇒ Object
Recursively freezes Hash (keys and values), Array (elements), and String objects. All other types are returned as-is.
Intentionally left unfrozen:
- Procs / lambdas — may be deferred DB-backed callables
- Coercers (e.g. ArrayCoercer) — use lazy ivar memoization at request time
- Classes / Modules — shared constants that must remain open
- ParamsScope — self-freezes at the end of its own initialize
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/grape/util/deep_freeze.rb', line 16 def deep_freeze(obj) case obj when Hash obj.each do |k, v| deep_freeze(k) deep_freeze(v) end obj.freeze when Array obj.each { |v| deep_freeze(v) } obj.freeze when String obj.freeze else obj end end |