slack_log_device 5.1.3 → 5.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f341ad9a62ebfc4b35e66667ea30f6004938e90a281945c43ac86718a00ebafa
4
- data.tar.gz: 6fe8289362507dc6a1c96215b11f15114ed3f72b2270d9f738cce1aeccd8570a
3
+ metadata.gz: abd06c80c27bf0d22d5e646a6998a0fdba732665296bb13d79872ae67529d5b2
4
+ data.tar.gz: 826eb4eafe925c5b7411caa868cb2ec837bf22f78e0e9db763c2e70ed55288f7
5
5
  SHA512:
6
- metadata.gz: 7a7c93726e522eaa5787420f980f167bfe44c03389ec52e97c66a2f50614ff757b16fe1ec8013b93c05ef66ff63ae9017bcef4621310ff3296960ed938d6f57c
7
- data.tar.gz: 77db6c7b401bbeed0effdc46705ae29ee5fe93d1dc1993bb07822cccc6b6dd1e3458234e6f7656fa3694a31c0596df7114857b377f524520bde51ffca7bae8a3
6
+ metadata.gz: bd156b4340ee81c5067b00d083d8838652d452818b52240ee5ca5ea88c02ac98aa1b7ff0992e2c42b331a27de080c2c352ddd61a96125fc598e9ca97624dd17a
7
+ data.tar.gz: 36fa2812286ef682b815fbb9c8d43cd8acdfcf0fdfb132d954eac2c5a4b7a8a45845c7363ab26228e2407ae11ab200cbe486cc00cd9360c65ae137320ceb6485
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.1.3
1
+ 5.1.4
@@ -10,7 +10,6 @@ class SlackLogDevice
10
10
  'FATAL' => ':fire:',
11
11
  'UNKNOWN' => ':interrobang:',
12
12
  }.freeze
13
- ENCODING = 'UTF-8'
14
13
  MAX_MESSAGE_LENGTH = 4000
15
14
 
16
15
  attr_reader :extra_metadata, :max_backtrace_lines
@@ -30,7 +29,7 @@ class SlackLogDevice
30
29
 
31
30
  def call(severity, datetime, progname, message)
32
31
  text = "*`#{severity}`*"
33
- text << " (*#{progname.encode(ENCODING)}*)" if progname.present?
32
+ text << " (*#{to_utf8(progname)}*)" if progname.present?
34
33
  text << ':'
35
34
  if message.is_a?(Exception)
36
35
  exception = message
@@ -90,26 +89,27 @@ class SlackLogDevice
90
89
 
91
90
  def append_exception_backtrace(text, exception)
92
91
  backtrace = format_backtrace(exception, MAX_MESSAGE_LENGTH - text.size - 2)
93
- backtrace.present? ? "#{text}\n\n#{backtrace}" : text
92
+ backtrace.present? ? "#{to_utf8(text)}\n\n#{backtrace}" : text
94
93
  end
95
94
 
96
95
  def append_exception_cause(text, exception)
97
96
  cause = exception.cause
97
+ text = to_utf8(text)
98
98
  return text if cause.nil?
99
99
  message = "\n\nCaused by `#{cause.class}`"
100
100
  return text if (text + message).size > MAX_MESSAGE_LENGTH
101
- text = truncate("#{text}#{message}: #{cause.message.try(:encode, ENCODING)}")
101
+ text = truncate("#{text}#{message}: #{to_utf8(cause.message)}")
102
102
  text = append_exception_backtrace(text, cause)
103
103
  append_exception_cause(text, cause)
104
104
  end
105
105
 
106
106
  def append_metadata(text, message)
107
107
  metadata = format_metadata(message, MAX_MESSAGE_LENGTH - text.size - 2)
108
- metadata.present? ? "#{text}\n\n#{metadata}" : text
108
+ metadata.present? ? "#{to_utf8(text)}\n\n#{metadata}" : text
109
109
  end
110
110
 
111
111
  def convert_message(message)
112
- @message_converter.call(message.to_s.strip).to_s.strip.encode(ENCODING)
112
+ to_utf8(@message_converter.call(to_utf8(message.to_s.strip)).to_s.strip)
113
113
  end
114
114
 
115
115
  def default_metadata(request)
@@ -128,14 +128,14 @@ class SlackLogDevice
128
128
  })
129
129
  metadata.keys.each do |key|
130
130
  value = metadata[key]
131
- metadata[key] = "`#{value.to_s.strip}`" if value.present?
131
+ metadata[key] = "`#{to_utf8(value.to_s.strip)}`" if value.present?
132
132
  end
133
133
  metadata
134
134
  end
135
135
 
136
136
  def format_backtrace(exception, size_available)
137
137
  return nil if max_backtrace_lines == 0 || size_available < 7
138
- backtrace = (exception.backtrace || []).select(&:present?).compact.map { |line| line.encode(ENCODING) }
138
+ backtrace = (exception.backtrace || []).select(&:present?).compact.map { |line| to_utf8(line) }
139
139
  return nil if backtrace.empty?
140
140
  if max_backtrace_lines < 0
141
141
  text = backtrace.join("\n")
@@ -154,7 +154,7 @@ class SlackLogDevice
154
154
  options[:request] = request if request.present?
155
155
  text = default_metadata(request).merge(extra_metadata).map do |name, value|
156
156
  value = value.call(options) if value.respond_to?(:call)
157
- value.present? ? "• *#{name.encode(ENCODING).strip}*: #{value.encode(ENCODING).strip}" : nil
157
+ value.present? ? "• *#{to_utf8(name).strip}*: #{to_utf8(value).strip}" : nil
158
158
  end.compact.join("\n")
159
159
  return nil if text.blank?
160
160
  truncate(text, size_available)
@@ -170,7 +170,12 @@ class SlackLogDevice
170
170
  message = message.strip
171
171
  return message if message.size <= max_length
172
172
  return message[0, max_length] if max_length < 3
173
- "#{message[0, max_length - 3]}...".encode(ENCODING)
173
+ to_utf8("#{message[0, max_length - 3]}...")
174
+ end
175
+
176
+ def to_utf8(text)
177
+ return text if text.nil? || text.encoding == Encoding::UTF_8
178
+ text.encode(Encoding::UTF_8) rescue text.dup.force_encoding(Encoding::UTF_8)
174
179
  end
175
180
 
176
181
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_log_device
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.3
4
+ version: 5.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte