class Ephemeron::Logger

Constants

PROXY_EVENTS
VALID_EVENTS

Public Instance Methods

has?(model, event) click to toggle source
# File lib/ephemeron/writers/logger.rb, line 14
def has?(model, event)
  validate model, event
  logs.include? Convert.call(model, event)
end
log(model, event, opts = {}) click to toggle source
# File lib/ephemeron/writers/logger.rb, line 19
def log(model, event, opts = {})
  validate model, event
  logs << Convert.call(model, event)
rescue LoggerError, StoreError => e
  raise e unless opts[:soft]
end
logs() click to toggle source
# File lib/ephemeron/writers/logger.rb, line 10
def logs
  self.ts_logs ||= []
end
reset() click to toggle source
# File lib/ephemeron/writers/logger.rb, line 26
def reset
  self.ts_logs = []
end

Private Instance Methods

event_name_for_validate(event) click to toggle source
# File lib/ephemeron/writers/logger.rb, line 51
def event_name_for_validate(event)
  if event == :used
    'mark as used'
  else
    'log'
  end
end
validate(model, event) click to toggle source
# File lib/ephemeron/writers/logger.rb, line 32
def validate(model, event)
  raise(LoggerError, "event (#{event}) is invalid") if VALID_EVENTS.exclude?(event)
  return true if validate_proxy_events model, event

  raise(StoreError, "can't #{event_name_for_validate event} for nil") if model.nil?
  return true if Store.has?(model)
  return true if event == :saved

  raise StoreError, "can't #{event_name_for_validate event} " \
                    "if #{Store::Convert.call model} is not in store"
end
validate_proxy_events(model, event) click to toggle source
# File lib/ephemeron/writers/logger.rb, line 44
def validate_proxy_events(model, event)
  return false if PROXY_EVENTS.exclude?(event)
  return true if model.nil?

  raise LoggerError, 'Proxy events can be logged for nil only'
end