Method: ActionView::UnboundTemplate#bind_locals
- Defined in:
- actionview/lib/action_view/unbound_template.rb
#bind_locals(locals) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'actionview/lib/action_view/unbound_template.rb', line 20 def bind_locals(locals) unless template = @templates[locals] @write_lock.synchronize do normalized_locals = normalize_locals(locals) # We need ||=, both to dedup on the normalized locals and to check # while holding the lock. template = (@templates[normalized_locals] ||= build_template(normalized_locals)) if template.strict_locals? # Under strict locals, we only need one template. # This replaces the @templates Concurrent::Map with a hash which # returns this template for every key. @templates = Hash.new(template).freeze else # This may have already been assigned, but we've already de-dup'd so # reassignment is fine. @templates[locals.dup] = template end end end template end |