Module: ActionPolicy::Policy::CachedApply

Included in:
Base
Defined in:
lib/action_policy/policy/cached_apply.rb

Overview

Per-policy cache for applied rules.

When you call ‘apply` twice on the same policy and for the same rule, the check (and pre-checks) is only called once.

Instance Method Summary collapse

Instance Method Details

#apply(rule) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/action_policy/policy/cached_apply.rb', line 10

def apply(rule)
  @__rules_cache__ ||= {}

  if @__rules_cache__.key?(rule)
    @result = @__rules_cache__[rule]
    return result.value
  end

  super

  @__rules_cache__[rule] = result

  result.value
end