Sha256: 757b04efe4ccd9d71597a3f8f74f79d159bac7ee469a3994c03643fadbfeb25a

Contents?: true

Size: 1.13 KB

Versions: 7

Compression:

Stored size: 1.13 KB

Contents

module CanTango
  class Ability
    module Executor
      include CanTango::Helpers::Debug
      include CanTango::Ability::CacheHelpers

      delegate :session, :user, :subject, :candidate, :cached?, :to => :ability

      def execute!
        return if !valid?
        start_execute
        return cached_rules if cached? && cached_rules?

        clear_rules!
        permit_rules

        cache_rules! if cached?
        end_execute
        rules
      end

      def rules
        @rules ||= []
      end

      def clear_rules!
        @rules ||= []
      end

      def permit_rules
        raise NotImplementedError
      end

      def cache
        @cache ||= CanTango::Ability::Cache.new self, :cache_key => cache_key, :key_method_names => key_method_names
      end

      def engine_name
        :permit
      end

      def valid?
        raise NotImplementedError
      end

      protected

      def start_execute
        debug "executing..."
      end

      def end_execute
        debug "DONE"
      end

      def cache_key
        raise NotImplementedError
      end

      def key_method_names
        []
      end
    end
  end
end


Version data entries

7 entries across 7 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
cantango-0.9.4.3 lib/cantango/ability/executor.rb
cantango-0.9.4.2 lib/cantango/ability/executor.rb
cantango-0.9.4.1 lib/cantango/ability/executor.rb
cantango-0.9.4 lib/cantango/ability/executor.rb