Sha256: 3d04bf71b2ba8cf05dc2dc903d7f20721a660e085703567921eb84ecb102c64d
Contents?: true
Size: 855 Bytes
Versions: 1
Compression:
Stored size: 855 Bytes
Contents
# frozen_string_literal: true require "singleton" module Miau class PolicyStorage include Singleton attr_reader :policies def initialize @policies = {} end def run(klass, action, user, resource) policy = policy(klass, user, resource) return policy.send(action) if policy.respond_to?(action) msg = "class <#{klass} action <#{action}>" raise Miau::NotDefinedError, msg end private def policy(klass, user, resource) result = @policies[klass] if result result.user = user result.resource = resource return result end create_policy(klass, user, resource) end def create_policy(klass, user, resource) str = "#{klass}Policy" result = str.constantize.new(user, resource) @policies[klass] = result end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
miau-0.1.2 | lib/miau/storage.rb |