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.



11
12
13
14
15
16
17
18
# File 'lib/current_log_accessor.rb', line 11

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



122
123
124
125
126
127
# File 'lib/current_log_accessor.rb', line 122

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



103
104
105
106
107
108
109
# File 'lib/current_log_accessor.rb', line 103

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



82
83
84
85
86
87
88
89
90
# File 'lib/current_log_accessor.rb', line 82

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



129
130
131
132
133
# File 'lib/current_log_accessor.rb', line 129

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

#descObject



43
44
45
# File 'lib/current_log_accessor.rb', line 43

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

#errorsObject



111
112
113
# File 'lib/current_log_accessor.rb', line 111

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

#main_contentObject



66
67
68
# File 'lib/current_log_accessor.rb', line 66

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

#modified_recordsObject



92
93
94
# File 'lib/current_log_accessor.rb', line 92

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

#overwrite_errors(new_errors) ⇒ Object



115
116
117
118
119
120
# File 'lib/current_log_accessor.rb', line 115

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



96
97
98
99
100
101
# File 'lib/current_log_accessor.rb', line 96

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



20
21
22
23
24
25
26
27
28
# File 'lib/current_log_accessor.rb', line 20

def publish(**options)
  update_current_log(options)

  message = @msg_writer.write(desc: desc, user: user, main_content: main_content)
  routing_key = @msg_writer.write_description_tag(desc)

  @msg_broker.publish(message, routing_key)
  clear_log_info
end

#update_action(new_action_name) ⇒ Object



55
56
57
# File 'lib/current_log_accessor.rb', line 55

def update_action(new_action_name)
  desc[:action] = @desc_uniformizer.action(new_action_name)
end

#update_desc(new_desc) ⇒ Object



59
60
61
62
63
64
# File 'lib/current_log_accessor.rb', line 59

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



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/current_log_accessor.rb', line 70

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



51
52
53
# File 'lib/current_log_accessor.rb', line 51

def update_service(new_service_name)
  desc[:service] = @desc_uniformizer.service(new_service_name)
end

#update_type(new_type_name) ⇒ Object



47
48
49
# File 'lib/current_log_accessor.rb', line 47

def update_type(new_type_name)
  desc[:type] = @desc_uniformizer.type(new_type_name)
end

#update_user(new_user) ⇒ Object



36
37
38
39
40
41
# File 'lib/current_log_accessor.rb', line 36

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…)



32
33
34
# File 'lib/current_log_accessor.rb', line 32

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