Sha256: b77613ae52bf3ebe6ca36255eac39a1c5fd4aaa66a1376e809c4f4fbc288b8fb

Contents?: true

Size: 902 Bytes

Versions: 3

Compression:

Stored size: 902 Bytes

Contents

module CanTango
  class AbilityExecutor < CanTango::Ability

    def initialize candidate, options = {}
      raise "Candidate must be something!" if !candidate
      @candidate, @options = [candidate, options]
      @rules = cached_rules + non_cached_rules
      rules.flatten!
      rules.compact!
    end

    def rules
      @rules ||= []
    end

    def cached_rules
      cache_mode? ? cached_ability.send(:rules) : []
    end

    def non_cached_rules
      no_cache_mode? ? non_cached_ability.send(:rules) : []
    end

    def cached_ability
      CanTango::CachedAbility.new candidate, options
    end

    def non_cached_ability
      CanTango::Ability.new candidate, options
    end

    protected

    def no_cache_mode?
      modes.include?(:no_cache)
    end

    def cache_mode?
      modes.include?(:cache)
    end

    def modes
      CanTango.config.ability.modes
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cantango-0.9.4.7 lib/cantango/ability_executor.rb
cantango-0.9.4.6 lib/cantango/ability_executor.rb
cantango-0.9.4.5 lib/cantango/ability_executor.rb