class ChiliLogger::CurrentLogAccessor

class for manipulating current thread variables

Public Class Methods

new(msg_broker, msg_writer) click to toggle source
# File lib/current_log_accessor.rb, line 10
def initialize(msg_broker, msg_writer)
  @msg_broker = msg_broker
  @msg_writer = msg_writer
  @default = ChiliLogger::Values::Default.new
  @user_uniformizer = ChiliLogger::Values::TypeUniformizer::User.new
  @desc_uniformizer = ChiliLogger::Values::TypeUniformizer::Desc.new
  @main_content_uniformizer = ChiliLogger::Values::TypeUniformizer::MainContent.new
end

Public Instance Methods

add_error(error) click to toggle source
# File lib/current_log_accessor.rb, line 119
def add_error(error)
  uniformized_error = @main_content_uniformizer.error(error)

  main_content[:errors] = errors.push(uniformized_error)
  errors
end
add_modified_record(table_name, new_mod_rec) click to toggle source
# File lib/current_log_accessor.rb, line 100
def add_modified_record(table_name, new_mod_rec)
  return unless table_name.is_a?(String)

  uniformized_rec = @main_content_uniformizer.modified_record(new_mod_rec)
  modified_records[table_name] ||= []
  modified_records[table_name] = modified_records[table_name].push(uniformized_rec)
end
add_to_main_content(new_content) click to toggle source
# File lib/current_log_accessor.rb, line 79
def add_to_main_content(new_content)
  uniform_content = @main_content_uniformizer.main_content(new_content)
  uniform_recs = uniform_content[:modified_records]
  uniform_errs = uniform_content[:errors]

  # only overwrite if key was explicitly set
  main_content[:modified_records] = modified_records.merge(uniform_recs) if uniform_recs
  main_content[:errors] = errors + uniform_errs if uniform_errs
end
clear_log_info() click to toggle source
# File lib/current_log_accessor.rb, line 126
def clear_log_info
  update_desc(nil)
  update_user(nil)
  update_main_content(nil)
end
desc() click to toggle source
# File lib/current_log_accessor.rb, line 40
def desc
  Thread.current[:current_log_desc] ||= @default.desc
end
errors() click to toggle source
# File lib/current_log_accessor.rb, line 108
def errors
  main_content[:errors] ||= @default.log_errors
end
main_content() click to toggle source
# File lib/current_log_accessor.rb, line 63
def main_content
  Thread.current[:current_log_main_content] ||= @default.main_content
end
modified_records() click to toggle source
# File lib/current_log_accessor.rb, line 89
def modified_records
  main_content[:modified_records] ||= @default.modified_records
end
overwrite_errors(new_errors) click to toggle source
# File lib/current_log_accessor.rb, line 112
def overwrite_errors(new_errors)
  return main_content[:errors] = nil if new_errors.nil?

  uniformized_errors = @main_content_uniformizer.errors(new_errors)
  main_content[:errors] = uniformized_errors
end
overwrite_modified_records(new_mod_recs) click to toggle source
# File lib/current_log_accessor.rb, line 93
def overwrite_modified_records(new_mod_recs)
  return main_content[:modified_records] = nil if new_mod_recs.nil?

  uniformized_recs = @main_content_uniformizer.modified_records(new_mod_recs)
  main_content[:modified_records] = uniformized_recs
end
publish(**options) click to toggle source
# File lib/current_log_accessor.rb, line 19
def publish(**options)
  update_current_log(options)
  message = @msg_writer.write(desc: desc, user: user, main_content: main_content)
  @msg_broker.publish(message)

  clear_log_info
end
update_action(new_action_name) click to toggle source
# File lib/current_log_accessor.rb, line 52
def update_action(new_action_name)
  desc[:action] = @desc_uniformizer.action(new_action_name)
end
update_desc(new_desc) click to toggle source
# File lib/current_log_accessor.rb, line 56
def update_desc(new_desc)
  return Thread.current[:current_log_desc] = nil if new_desc.nil?

  uniformized_desc = @desc_uniformizer.desc(new_desc)
  Thread.current[:current_log_desc] = desc.merge(uniformized_desc)
end
update_main_content(new_content) click to toggle source
# File lib/current_log_accessor.rb, line 67
def update_main_content(new_content)
  return Thread.current[:current_log_main_content] = nil if new_content.nil?

  uniform_content = @main_content_uniformizer.main_content(new_content)
  uniform_recs = @main_content_uniformizer.modified_records(uniform_content[:modified_records])
  uniform_errors = @main_content_uniformizer.errors(uniform_content[:errors])

  # only overwrite if key was explicitly set
  main_content[:modified_records] = uniform_recs if uniform_content.key?(:modified_records)
  main_content[:errors] = uniform_errors if uniform_content.key?(:errors)
end
update_service(new_service_name) click to toggle source
# File lib/current_log_accessor.rb, line 48
def update_service(new_service_name)
  desc[:service] = @desc_uniformizer.service(new_service_name)
end
update_type(new_type_name) click to toggle source
# File lib/current_log_accessor.rb, line 44
def update_type(new_type_name)
  desc[:type] = @desc_uniformizer.type(new_type_name)
end
update_user(new_user) click to toggle source
# File lib/current_log_accessor.rb, line 33
def update_user(new_user)
  return Thread.current[:current_log_user] = nil if new_user.nil?

  uniformized_user = @user_uniformizer.user(new_user)
  Thread.current[:current_log_user] = user.merge(uniformized_user)
end
user() click to toggle source

ACCESSOR METHODS BELOW current log infos are stored in thread variables, so they can be accessed anywhere(controllers, models, tasks…)

# File lib/current_log_accessor.rb, line 29
def user
  Thread.current[:current_log_user] ||= @default.user
end

Private Instance Methods

update_current_log(options) click to toggle source
# File lib/current_log_accessor.rb, line 134
def update_current_log(options)
  update_desc(options[:desc]) if options[:desc]
  update_user(options[:user]) if options[:user]
  update_main_content(options[:main_content]) if options[:main_content]
end