module Kan::Abilities::ClassMethods
Constants
- DEFAULT_ROLE_BLOCK
- DEFAULT_ROLE_NAME
Public Instance Methods
ability_list()
click to toggle source
# File lib/kan/abilities.rb, line 41 def ability_list @ability_list || {} end
register(*abilities, &block)
click to toggle source
# File lib/kan/abilities.rb, line 16 def register(*abilities, &block) abilities.map!(&:to_sym) raise InvalidAbilityNameError if abilities.include?(:roles) @ability_list ||= {} abilities.each { |ability| @ability_list[ability] = block } end
role(role_name, object = nil, &block)
click to toggle source
# File lib/kan/abilities.rb, line 24 def role(role_name, object = nil, &block) @role_name = role_name @role_block = object ? make_callable(object) : block end
role_block()
click to toggle source
# File lib/kan/abilities.rb, line 33 def role_block @role_block || DEFAULT_ROLE_BLOCK end
role_name()
click to toggle source
# File lib/kan/abilities.rb, line 29 def role_name @role_name || DEFAULT_ROLE_NAME end
valid_role?(*args)
click to toggle source
# File lib/kan/abilities.rb, line 37 def valid_role?(*args) role_block.call(*args) end
Private Instance Methods
make_callable(object)
click to toggle source
# File lib/kan/abilities.rb, line 47 def make_callable(object) callable_object = object.is_a?(Class) ? object.new : object return callable_object if callable_object.respond_to? :call raise InvalidRoleObjectError.new "role object #{object} does not support #call method" end