Sha256: 6fbe3971a68fc15ba06a4917cd4af03b24cd8458da5909655ee825901a68c4d3

Contents?: true

Size: 1.26 KB

Versions: 6

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

require "ruby-next"

require "ruby-next/language/setup"
RubyNext::Language.setup_gem_load_path(transpile: true)

# ActionPolicy is an authorization framework for Ruby/Rails applications.
#
# It provides a way to write access policies and helpers to check these policies
# in your application.
module ActionPolicy
  class Error < StandardError; end

  # Raised when Action Policy fails to find a policy class for a record.
  class NotFound < Error
    attr_reader :target, :message

    def initialize(target, message = nil)
      @target = target
      @message =
        message ||
        "Couldn't find policy class for #{target.inspect}" \
        "#{target.is_a?(Module) ? "" : " (#{target.class})"}"
    end
  end

  require "action_policy/version"
  require "action_policy/base"
  require "action_policy/lookup_chain"
  require "action_policy/behaviour"
  require "action_policy/i18n" if defined?(::I18n)

  class << self
    attr_accessor :cache_store

    # Find a policy class for a target
    def lookup(target, allow_nil: false, default: nil, **options)
      LookupChain.call(target, **options) ||
        default ||
        (allow_nil ? nil : raise(NotFound, target))
    end
  end

  require "action_policy/railtie" if defined?(::Rails)
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
action_policy-0.5.5 lib/action_policy.rb
action_policy-0.5.4 lib/action_policy.rb
action_policy-0.5.3 lib/action_policy.rb
action_policy-0.5.2 lib/action_policy.rb
action_policy-0.5.1 lib/action_policy.rb
action_policy-0.5.0 lib/action_policy.rb