class HecksApp::ApplicationPort

Attributes

adapters[RW]
event[RW]

Public Class Methods

[](value) click to toggle source
# File lib/hecks-app.rb, line 51
def self.[](value)
  CommandRunner.new(value)
end
config(&block) click to toggle source
# File lib/hecks-app.rb, line 34
def self.config(&block)
  instance.instance_eval(&block)
  instance.event.emit(:AppConfigured)
end
domain() click to toggle source
# File lib/hecks-app.rb, line 43
def self.domain
  instance.domain_get
end
domain_object_from_repository(repository) click to toggle source
# File lib/hecks-app.rb, line 26
def self.domain_object_from_repository(repository)
  const_get(repository.to_s.gsub('::Repository', ''))
end
find_aggregate(name) click to toggle source
# File lib/hecks-app.rb, line 30
def self.find_aggregate(name)
  domain::Domain.const_get(name)
end
in_repository(aggregate) { || ... } click to toggle source
# File lib/hecks-app.rb, line 20
def self.in_repository(aggregate)
  aggregate::Root::Repository.class_eval do
    yield
  end
end
new() click to toggle source
# File lib/hecks-app.rb, line 14
def initialize
  @adapters = []
  @domain = nil
  @event = Event
end
subscribe(subscriber, event) click to toggle source
# File lib/hecks-app.rb, line 39
def self.subscribe(subscriber, event)
  instance.event.subscribe(subscriber, event)
end

Public Instance Methods

adapter(name) click to toggle source
# File lib/hecks-app.rb, line 60
def adapter(name)
  Adapters.const_get(name).new.tap do |adapter|
    adapter.load
    @adapters << adapter
  end
end
domain(domain) click to toggle source
# File lib/hecks-app.rb, line 55
def domain(domain)
  @domain = domain
  require_relative 'application_port/domain_schema'
end
domain_get() click to toggle source
# File lib/hecks-app.rb, line 47
def domain_get
  @domain
end