class Allowy::Registry
Public Class Methods
new(ctx, options={})
click to toggle source
# File lib/allowy/registry.rb, line 3 def initialize(ctx, options={}) options.assert_valid_keys(:access_suffix) @context = ctx @registry = {} @options = options end
Public Instance Methods
access_control_for(subject)
click to toggle source
# File lib/allowy/registry.rb, line 16 def access_control_for(subject) # Try subject as decorated object clazz = class_for subject.class.source_class.name if subject.class.respond_to?(:source_class) # Try subject as an object clazz = class_for subject.class.name unless clazz # Try subject as a class clazz = class_for subject.name if !clazz && subject.is_a?(Class) return unless clazz # No luck this time # create a new instance or return existing @registry[clazz] ||= clazz.new(@context) end
access_control_for!(subject)
click to toggle source
# File lib/allowy/registry.rb, line 10 def access_control_for!(subject) ac = access_control_for subject raise UndefinedAccessControl.new("Please define Access Control class for #{subject.inspect}") unless ac ac end
Private Instance Methods
access_suffix()
click to toggle source
# File lib/allowy/registry.rb, line 37 def access_suffix @options.fetch(:access_suffix) { 'Access' } end
class_for(name)
click to toggle source
# File lib/allowy/registry.rb, line 33 def class_for(name) "#{name}#{access_suffix}".safe_constantize end