class Permissify::Registry

The boot-time store of definitions. It holds, per resource key, the named facts, named permissions, and explicit action aliases. The DSL is only a registration script that writes here; the Registry has the authority. Mutation is synchronized and expected only at boot/reload boundaries.

Public Class Methods

new() click to toggle source
# File lib/permissify/registry.rb, line 22
def initialize
  @resources = {}
  @mutex     = Mutex.new
end

Public Instance Methods

clear() click to toggle source
# File lib/permissify/registry.rb, line 46
def clear
  @mutex.synchronize { @resources.clear }
  self
end
define(resource_key, &block) click to toggle source
# File lib/permissify/registry.rb, line 27
def define(resource_key, &block)
  raise DefinitionError, "define requires a block" unless block

  key = resource_key.to_sym
  @mutex.synchronize do
    definition = (@resources[key] ||= ResourceDefinition.new(key))
    DSL.new(definition).instance_eval(&block)
  end
  self
end
resource(resource_key) click to toggle source
# File lib/permissify/registry.rb, line 38
def resource(resource_key)
  return nil unless resource_key

  @resources[resource_key.to_sym]
end
resource_keys(= @resources.keys) click to toggle source
# File lib/permissify/registry.rb, line 44
  def resource_keys = @resources.keys

  def clear
    @mutex.synchronize { @resources.clear }
    self
  end
end