class Mnemosyne::Registry

Attributes

monitor[R]

Public Class Methods

new() click to toggle source
# File lib/mnemosyne/registry.rb, line 27
def initialize
  @registrations = []
  @activated     = false
  @monitor       = Monitor.new
end

Public Instance Methods

activate!() click to toggle source
# File lib/mnemosyne/registry.rb, line 33
def activate!
  return if activated?

  @registrations.each(&method(:activate))

  @activated = true
end
activated?() click to toggle source
# File lib/mnemosyne/registry.rb, line 41
def activated?
  @activated
end
register(*args) click to toggle source
# File lib/mnemosyne/registry.rb, line 45
def register(*args)
  @registrations << (registration = Registration.new(*args))

  activate(registration) if activated?
end
required(path) click to toggle source
# File lib/mnemosyne/registry.rb, line 51
def required(path)
  return unless activated?
  return unless (set = monitor.delete(path))

  set.each(&method(:activate))
end

Private Instance Methods

activate(registration) click to toggle source
# File lib/mnemosyne/registry.rb, line 62
def activate(registration)
  if registration.installable?
    registration.install
  else
    monitor << registration
  end
end