Class: ChiliLogger::CurrentLogAccessor

Inherits:
Object
  • Object
show all
Defined in:
lib/current_log_accessor.rb

Overview

class for manipulating current thread variables

Instance Method Summary collapse

Constructor Details

#initialize(msg_broker, msg_writer) ⇒ CurrentLogAccessor

Returns a new instance of CurrentLogAccessor.



10
11
12
13
14
15
16
17
# 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

Instance Method Details

#add_error(error) ⇒ Object



119
120
121
122
123
124
# 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) ⇒ Object



100
101
102
103
104
105
106
# 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) ⇒ Object



79
80
81
82
83
84
85
86
87
# 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_infoObject



126
127
128
129
130
# File 'lib/current_log_accessor.rb', line 126

def clear_log_info
  update_desc(nil)
  update_user(nil)
  update_main_content(nil)
end

#descObject



40
41
42
# File 'lib/current_log_accessor.rb', line 40

def desc
  Thread.current[:current_log_desc] ||= @default.desc
end

#errorsObject



108
109
110
# File 'lib/current_log_accessor.rb', line 108

def errors
  main_content[:errors] ||= @default.log_errors
end

#main_contentObject



63
64
65
# File 'lib/current_log_accessor.rb', line 63

def main_content
  Thread.current[:current_log_main_content] ||= @default.main_content
end

#modified_recordsObject



89
90
91
# File 'lib/current_log_accessor.rb', line 89

def modified_records
  main_content[:modified_records] ||= @default.modified_records
end

#overwrite_errors(new_errors) ⇒ Object



112
113
114
115
116
117
# 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) ⇒ Object



93
94
95
96
97
98
# 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) ⇒ Object



19
20
21
22
23
24
25
# 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) ⇒ Object



52
53
54
# 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) ⇒ Object



56
57
58
59
60
61
# 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) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
# 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) ⇒ Object



48
49
50
# 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) ⇒ Object



44
45
46
# 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) ⇒ Object



33
34
35
36
37
38
# 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

#userObject

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



29
30
31
# File 'lib/current_log_accessor.rb', line 29

def user
  Thread.current[:current_log_user] ||= @default.user
end