class ActionPolicy::LookupChain::NamespaceCache
Cache namespace resolving result for policies. @see benchmarks/namespaced_lookup_cache.rb
Attributes
store[R]
Public Class Methods
clear()
click to toggle source
# File lib/action_policy/lookup_chain.rb, line 43 def clear hash = Hash.new { |h, k| h[k] = {} } @store = {strict: hash, flexible: hash.clone} end
fetch(namespace, policy, strict:) { || ... }
click to toggle source
# File lib/action_policy/lookup_chain.rb, line 33 def fetch(namespace, policy, strict:, &block) return yield unless LookupChain.namespace_cache_enabled? if strict put_if_absent(:strict, namespace, policy, &block) else put_if_absent(:flexible, namespace, policy, &block) end end
put_if_absent(scope, namespace, policy) { || ... }
click to toggle source
# File lib/action_policy/lookup_chain.rb, line 27 def put_if_absent(scope, namespace, policy) local_store = store[scope][namespace] return local_store[policy] if local_store[policy] local_store[policy] ||= yield end