appsignal 4.0.7-java → 4.0.9-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17a0e4b7548920603d0dcba11762fc6043e263138903671fd7bc7da41d587ba4
4
- data.tar.gz: 270076b4c45a2f5581f7ed8a6fe952cabefd52779f1f033c5c1e1212757772c2
3
+ metadata.gz: bbb72b56837756abd3ec4d56855208a44ced0aabac240846bc13e685365ff79e
4
+ data.tar.gz: bca5d410c1a2fb91812d2cc63b19a04b0db6cafd18c368a1ece930915bbf0a66
5
5
  SHA512:
6
- metadata.gz: 17b008d3d0198db02366d4446a718e44da22bd8bef6fb0c373710fdd8219e56864d10958f8d5d0d6960ee3f7c2e65743543b6d509e20f0ca0d2c861a750b0c16
7
- data.tar.gz: 5f6284b47a65d258bfc567f6d7ba68c91458251bfc39d74709644324c8f9e277657d42eca93077509a837dfba3fe412385b2d853e73aba7c1f0863df5356efc0
6
+ metadata.gz: cd24c802a14d24e154f99493a242c815b85ab96c7049d589d0d1e26eb097d53e91eecc7732e97b8f2ea7415edef21df79bfbcbe1015f7cb5823f292ff30f9939
7
+ data.tar.gz: 5e3d0d285a6ebf6a7b8beae27fdaceec6365aa016fa1181e1572f42054fced494771eac6fd62434efb5cd4dae7ee7ca542aa1b6ac5d680139ec7d24dfd238c55
data/CHANGELOG.md CHANGED
@@ -1,12 +1,42 @@
1
1
  # AppSignal for Ruby gem Changelog
2
2
 
3
+ ## 4.0.9
4
+
5
+ _Published on 2024-09-17._
6
+
7
+ ### Changed
8
+
9
+ - Add the logger gem as a dependency. This fixes the deprecation warning on Ruby 3.3. (patch [8c1d577e](https://github.com/appsignal/appsignal-ruby/commit/8c1d577e4790185db887d49577cedc7d614d8d98))
10
+ - Do not report errors caused by `Errno::EPIPE` (broken pipe errors) when instrumenting response bodies, to avoid reporting errors that cannot be fixed by the application. (patch [1fdccba4](https://github.com/appsignal/appsignal-ruby/commit/1fdccba4ceeb8f9bb13ae077019b2c1f7d9d4fe4))
11
+ - Normalize Rack and Rails `UploadedFile` objects. Instead of displaying the Ruby class name, it will now show object details like the filename and content type.
12
+
13
+ ```
14
+ # Before
15
+ #<Rack::Multipart::UploadedFile>
16
+ #<ActionDispatch::Http::UploadedFile>
17
+
18
+ # After
19
+ #<Rack::Multipart::UploadedFile original_filename: "uploaded_file.txt", content_type: "text/plain">
20
+ #<ActionDispatch::Http::UploadedFile original_filename: "uploaded_file.txt", content_type: "text/plain">
21
+ ```
22
+
23
+ (patch [bb50c933](https://github.com/appsignal/appsignal-ruby/commit/bb50c93387eafebe043b0e7f4083c95556b93136))
24
+
25
+ ## 4.0.8
26
+
27
+ _Published on 2024-09-13._
28
+
29
+ ### Fixed
30
+
31
+ - Fix a `ThreadError` from being raised on process exit when `Appsignal.stop` is called from a `Signal.trap` block, like when Puma shuts down in clustered mode. (patch [32323ded](https://github.com/appsignal/appsignal-ruby/commit/32323ded277d4764ea1bd0d0dab02bef3de40ccb))
32
+
3
33
  ## 4.0.7
4
34
 
5
35
  _Published on 2024-09-12._
6
36
 
7
37
  ### Changed
8
38
 
9
- - Format the Date and Time objects in a human-friendly way. Previously, dates and times stored in sample data, like session data, would be shown as `#<Date>` and `#<Time>`. Now they will show as `#<Date: 2024-09-11>` and `#<Time: Time: 2024-09-12T13:14:15+02:00>` (UTC offset may be different for your time objects depending on the server setting). (patch [8f516484](https://github.com/appsignal/appsignal-ruby/commit/8f516484d249f43ffadcf15a67bbab48f827eff6))
39
+ - Format the Date and Time objects in a human-friendly way. Previously, dates and times stored in sample data, like session data, would be shown as `#<Date>` and `#<Time>`. Now they will show as `#<Date: 2024-09-11>` and `#<Time: 2024-09-12T13:14:15+02:00>` (UTC offset may be different for your time objects depending on the server setting). (patch [8f516484](https://github.com/appsignal/appsignal-ruby/commit/8f516484d249f43ffadcf15a67bbab48f827eff6))
10
40
 
11
41
  ### Removed
12
42
 
data/appsignal.gemspec CHANGED
@@ -17,8 +17,8 @@ IGNORED_PATHS = [
17
17
  ".yardopts",
18
18
  "benchmark.rake",
19
19
  "mono.yml",
20
- "rubocop.yml",
21
- "rubocop_todo.yml"
20
+ ".rubocop.yml",
21
+ ".rubocop_todo.yml"
22
22
  ].freeze
23
23
 
24
24
  Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
@@ -56,6 +56,7 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
56
56
  "source_code_uri" => "https://github.com/appsignal/appsignal-ruby"
57
57
  }
58
58
 
59
+ gem.add_dependency "logger"
59
60
  gem.add_dependency "rack"
60
61
 
61
62
  gem.add_development_dependency "pry"
@@ -54,7 +54,7 @@ module Appsignal
54
54
  rescue *IGNORED_ERRORS # Do not report
55
55
  raise
56
56
  rescue Exception => error # rubocop:disable Lint/RescueException
57
- @transaction.set_error(error)
57
+ appsignal_report_error(error)
58
58
  raise error
59
59
  end
60
60
 
@@ -72,6 +72,19 @@ module Appsignal
72
72
  @body.__send__(method_name, *args, &block)
73
73
  end
74
74
  ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
75
+
76
+ private
77
+
78
+ def appsignal_report_error(error)
79
+ @transaction.set_error(error) if appsignal_accepted_error?(error)
80
+ end
81
+
82
+ def appsignal_accepted_error?(error)
83
+ return true unless error.cause
84
+ return false if IGNORED_ERRORS.include?(error.cause.class)
85
+
86
+ appsignal_accepted_error?(error.cause)
87
+ end
75
88
  end
76
89
 
77
90
  # The standard Rack body wrapper which exposes "each" for iterating
@@ -97,7 +110,7 @@ module Appsignal
97
110
  rescue *IGNORED_ERRORS # Do not report
98
111
  raise
99
112
  rescue Exception => error # rubocop:disable Lint/RescueException
100
- @transaction.set_error(error)
113
+ appsignal_report_error(error)
101
114
  raise error
102
115
  end
103
116
  end
@@ -118,7 +131,7 @@ module Appsignal
118
131
  rescue *IGNORED_ERRORS # Do not report
119
132
  raise
120
133
  rescue Exception => error # rubocop:disable Lint/RescueException
121
- @transaction.set_error(error)
134
+ appsignal_report_error(error)
122
135
  raise error
123
136
  end
124
137
  end
@@ -144,7 +157,7 @@ module Appsignal
144
157
  rescue *IGNORED_ERRORS # Do not report
145
158
  raise
146
159
  rescue Exception => error # rubocop:disable Lint/RescueException
147
- @transaction.set_error(error)
160
+ appsignal_report_error(error)
148
161
  raise error
149
162
  end
150
163
  end
@@ -162,7 +175,7 @@ module Appsignal
162
175
  rescue *IGNORED_ERRORS # Do not report
163
176
  raise
164
177
  rescue Exception => error # rubocop:disable Lint/RescueException
165
- @transaction.set_error(error)
178
+ appsignal_report_error(error)
166
179
  raise error
167
180
  end
168
181
  end
@@ -707,7 +707,7 @@ module Appsignal
707
707
  return unless Appsignal.config[:send_params]
708
708
 
709
709
  filter_keys = Appsignal.config[:filter_parameters] || []
710
- Appsignal::Utils::HashSanitizer.sanitize params, filter_keys
710
+ Appsignal::Utils::SampleDataSanitizer.sanitize(params, filter_keys)
711
711
  end
712
712
 
713
713
  def session_data
@@ -720,7 +720,8 @@ module Appsignal
720
720
 
721
721
  # Returns sanitized session data.
722
722
  #
723
- # The session data is sanitized by the {Appsignal::Utils::HashSanitizer}.
723
+ # The session data is sanitized by the
724
+ # {Appsignal::Utils::SampleDataSanitizer}.
724
725
  #
725
726
  # @return [nil] if `:send_session_data` config is set to `false`.
726
727
  # @return [nil] if the {#request} object doesn't respond to `#session`.
@@ -729,8 +730,9 @@ module Appsignal
729
730
  def sanitized_session_data
730
731
  return unless Appsignal.config[:send_session_data]
731
732
 
732
- Appsignal::Utils::HashSanitizer.sanitize(
733
- session_data, Appsignal.config[:filter_session_data]
733
+ Appsignal::Utils::SampleDataSanitizer.sanitize(
734
+ session_data,
735
+ Appsignal.config[:filter_session_data]
734
736
  )
735
737
  end
736
738
 
@@ -25,7 +25,7 @@ module Appsignal
25
25
  # An Integer too big for C-lang longs to fit
26
26
  bigint = 1 << 63
27
27
  if value >= bigint
28
- map.set_string(key, "bigint:#{value}")
28
+ map.set_string(key, map_bigint(value))
29
29
  else
30
30
  map.set_integer(key, value)
31
31
  end
@@ -56,7 +56,7 @@ module Appsignal
56
56
  # An Integer too big for C-lang longs to fit
57
57
  bigint = 1 << 63
58
58
  if value >= bigint
59
- array.append_string("bigint:#{value}")
59
+ array.append_string(map_bigint(value))
60
60
  else
61
61
  array.append_integer(value)
62
62
  end
@@ -76,6 +76,10 @@ module Appsignal
76
76
  end
77
77
  array
78
78
  end
79
+
80
+ def map_bigint(value)
81
+ "bigint:#{value}"
82
+ end
79
83
  end
80
84
  end
81
85
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Appsignal
4
4
  module Utils
5
- class HashSanitizer
5
+ class SampleDataSanitizer
6
6
  FILTERED = "[FILTERED]"
7
7
  RECURSIVE = "[RECURSIVE VALUE]"
8
8
 
@@ -26,7 +26,21 @@ module Appsignal
26
26
  when Date
27
27
  "#<Date: #{value.iso8601}>"
28
28
  else
29
- inspected(value)
29
+ if defined?(::Rack::Multipart::UploadedFile) &&
30
+ value.is_a?(::Rack::Multipart::UploadedFile)
31
+ "#<Rack::Multipart::UploadedFile " \
32
+ "original_filename: #{value.original_filename.inspect}, " \
33
+ "content_type: #{value.content_type.inspect}" \
34
+ ">"
35
+ elsif defined?(::ActionDispatch::Http::UploadedFile) &&
36
+ value.is_a?(::ActionDispatch::Http::UploadedFile)
37
+ "#<ActionDispatch::Http::UploadedFile " \
38
+ "original_filename: #{value.original_filename.inspect}, " \
39
+ "content_type: #{value.content_type.inspect}" \
40
+ ">"
41
+ else
42
+ inspected(value)
43
+ end
30
44
  end
31
45
  end
32
46
 
@@ -9,7 +9,7 @@ end
9
9
  require "appsignal/utils/integration_memory_logger"
10
10
  require "appsignal/utils/stdout_and_logger_message"
11
11
  require "appsignal/utils/data"
12
- require "appsignal/utils/hash_sanitizer"
12
+ require "appsignal/utils/sample_data_sanitizer"
13
13
  require "appsignal/utils/integration_logger"
14
14
  require "appsignal/utils/json"
15
15
  require "appsignal/utils/ndjson"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Appsignal
4
- VERSION = "4.0.7"
4
+ VERSION = "4.0.9"
5
5
  end
data/lib/appsignal.rb CHANGED
@@ -157,14 +157,16 @@ module Appsignal
157
157
  # @return [void]
158
158
  # @since 1.0.0
159
159
  def stop(called_by = nil)
160
- if called_by
161
- internal_logger.debug("Stopping AppSignal (#{called_by})")
162
- else
163
- internal_logger.debug("Stopping AppSignal")
164
- end
165
- Appsignal::Extension.stop
166
- Appsignal::Probes.stop
167
- Appsignal::CheckIn.stop
160
+ Thread.new do
161
+ if called_by
162
+ internal_logger.debug("Stopping AppSignal (#{called_by})")
163
+ else
164
+ internal_logger.debug("Stopping AppSignal")
165
+ end
166
+ Appsignal::Extension.stop
167
+ Appsignal::Probes.stop
168
+ Appsignal::CheckIn.stop
169
+ end.join
168
170
  end
169
171
 
170
172
  # Configure the AppSignal Ruby gem using a DSL.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.7
4
+ version: 4.0.9
5
5
  platform: java
6
6
  authors:
7
7
  - Robert Beekman
@@ -10,8 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-09-12 00:00:00.000000000 Z
13
+ date: 2024-09-17 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: logger
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
15
29
  - !ruby/object:Gem::Dependency
16
30
  name: rack
17
31
  requirement: !ruby/object:Gem::Requirement
@@ -147,8 +161,6 @@ extensions:
147
161
  - ext/Rakefile
148
162
  extra_rdoc_files: []
149
163
  files:
150
- - ".rubocop.yml"
151
- - ".rubocop_todo.yml"
152
164
  - CHANGELOG.md
153
165
  - CODE_OF_CONDUCT.md
154
166
  - Gemfile
@@ -274,13 +286,13 @@ files:
274
286
  - lib/appsignal/transmitter.rb
275
287
  - lib/appsignal/utils.rb
276
288
  - lib/appsignal/utils/data.rb
277
- - lib/appsignal/utils/hash_sanitizer.rb
278
289
  - lib/appsignal/utils/integration_logger.rb
279
290
  - lib/appsignal/utils/integration_memory_logger.rb
280
291
  - lib/appsignal/utils/json.rb
281
292
  - lib/appsignal/utils/ndjson.rb
282
293
  - lib/appsignal/utils/query_params_sanitizer.rb
283
294
  - lib/appsignal/utils/rails_helper.rb
295
+ - lib/appsignal/utils/sample_data_sanitizer.rb
284
296
  - lib/appsignal/utils/stdout_and_logger_message.rb
285
297
  - lib/appsignal/version.rb
286
298
  - lib/puma/plugin/appsignal.rb
data/.rubocop.yml DELETED
@@ -1,133 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- AllCops:
4
- TargetRubyVersion: 2.7
5
- NewCops: enable
6
- Include:
7
- - "**/*.rb"
8
- - "**/*.cap"
9
- - "**/*.rake"
10
- - "**/Gemfile"
11
- - "**/Rakefile"
12
- - "appsignal.gemspec"
13
- Exclude:
14
- - "pkg/**/*"
15
- - "tmp/**/*"
16
- - "vendor/**/*"
17
- - "spec/integration/diagnose/**/*"
18
- DisplayCopNames: true
19
- UseCache: true
20
- CacheRootDirectory: ./tmp
21
-
22
- Style/RescueStandardError:
23
- Enabled: false
24
-
25
- Style/Documentation:
26
- Enabled: false
27
-
28
- Style/StringLiterals:
29
- EnforcedStyle: double_quotes
30
-
31
- Style/StringLiteralsInInterpolation:
32
- EnforcedStyle: double_quotes
33
-
34
- Style/HashSyntax:
35
- EnforcedStyle: hash_rockets
36
-
37
- Style/EmptyMethod:
38
- EnforcedStyle: expanded
39
-
40
- Style/MissingRespondToMissing:
41
- Exclude:
42
- - "lib/appsignal/extension.rb"
43
- - "lib/appsignal/transaction.rb"
44
-
45
- Style/TrailingUnderscoreVariable:
46
- Enabled: false
47
-
48
- Style/Lambda:
49
- EnforcedStyle: lambda
50
-
51
- Style/WordArray:
52
- Enabled: false
53
-
54
- Style/FrozenStringLiteralComment:
55
- Enabled: true
56
- Exclude:
57
- - "spec/**/*.rb"
58
-
59
- Style/NumericPredicate:
60
- Enabled: false
61
-
62
- Style/SymbolArray:
63
- EnforcedStyle: brackets
64
-
65
- Style/RedundantConstantBase:
66
- Enabled: false
67
-
68
- Lint/ConstantDefinitionInBlock:
69
- Exclude:
70
- - "spec/**/*.rb"
71
-
72
- Lint/EmptyClass:
73
- Exclude:
74
- - "spec/**/*.rb"
75
-
76
- Lint/EmptyFile:
77
- Exclude:
78
- - "spec/**/*.rb"
79
-
80
- Layout/HashAlignment:
81
- EnforcedLastArgumentHashStyle: ignore_implicit
82
-
83
- Layout/ArgumentAlignment:
84
- EnforcedStyle: with_fixed_indentation
85
-
86
- Layout/LineContinuationLeadingSpace:
87
- Enabled: false
88
-
89
- Layout/FirstArrayElementIndentation:
90
- EnforcedStyle: consistent
91
-
92
- Layout/LineEndStringConcatenationIndentation:
93
- EnforcedStyle: indented
94
-
95
- Layout/ParameterAlignment:
96
- EnforcedStyle: with_fixed_indentation
97
-
98
- Layout/MultilineMethodCallIndentation:
99
- EnforcedStyle: indented
100
-
101
- Layout/MultilineOperationIndentation:
102
- EnforcedStyle: indented
103
-
104
- Layout/LineLength:
105
- Max: 100
106
-
107
- Naming/FileName:
108
- Exclude:
109
- - "ext/Rakefile"
110
-
111
- Naming/AccessorMethodName:
112
- Exclude:
113
- - "lib/appsignal/helpers/instrumentation.rb"
114
- - "lib/appsignal/transaction.rb"
115
-
116
- Naming/RescuedExceptionsVariableName:
117
- Enabled: false
118
-
119
- Naming/VariableNumber:
120
- Enabled: false
121
-
122
- Metrics/ModuleLength:
123
- Enabled: false
124
-
125
- Metrics/ClassLength:
126
- Enabled: false
127
-
128
- Metrics/BlockLength:
129
- Exclude:
130
- - "Rakefile"
131
-
132
- Gemspec/DevelopmentDependencies:
133
- Enabled: false
data/.rubocop_todo.yml DELETED
@@ -1,84 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2024-06-27 09:42:06 UTC using RuboCop version 1.64.1.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 2
10
- # Configuration parameters: AllowedParentClasses.
11
- Lint/MissingSuper:
12
- Exclude:
13
- - 'lib/appsignal/extension.rb'
14
- - 'lib/appsignal/logger.rb'
15
-
16
- # Offense count: 1
17
- Lint/StructNewOverride:
18
- Exclude:
19
- - 'spec/lib/appsignal/probes/sidekiq_spec.rb'
20
-
21
- # Offense count: 63
22
- # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
23
- Metrics/AbcSize:
24
- Max: 44
25
-
26
- # Offense count: 6
27
- # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
28
- # AllowedMethods: refine
29
- Metrics/BlockLength:
30
- Max: 31
31
-
32
- # Offense count: 21
33
- # Configuration parameters: AllowedMethods, AllowedPatterns.
34
- Metrics/CyclomaticComplexity:
35
- Max: 11
36
-
37
- # Offense count: 139
38
- # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
39
- Metrics/MethodLength:
40
- Max: 56
41
-
42
- # Offense count: 18
43
- # Configuration parameters: AllowedMethods, AllowedPatterns.
44
- Metrics/PerceivedComplexity:
45
- Max: 13
46
-
47
- # Offense count: 2
48
- Security/Open:
49
- Exclude:
50
- - 'ext/base.rb'
51
-
52
- # Offense count: 2
53
- # This cop supports unsafe autocorrection (--autocorrect-all).
54
- Security/YAMLLoad:
55
- Exclude:
56
- - 'lib/appsignal/config.rb'
57
- - 'lib/appsignal/integrations/sidekiq.rb'
58
-
59
- # Offense count: 7
60
- # This cop supports safe autocorrection (--autocorrect).
61
- # Configuration parameters: EnforcedStyle.
62
- # SupportedStyles: prefer_alias, prefer_alias_method
63
- Style/Alias:
64
- Exclude:
65
- - 'lib/appsignal/helpers/instrumentation.rb'
66
- - 'lib/appsignal/transaction.rb'
67
-
68
- # Offense count: 1
69
- Style/ClassVars:
70
- Exclude:
71
- - 'spec/lib/appsignal/event_formatter_spec.rb'
72
-
73
- # Offense count: 1
74
- Style/OpenStructUse:
75
- Exclude:
76
- - 'lib/appsignal/cli/install.rb'
77
-
78
- # Offense count: 2
79
- # Configuration parameters: AllowedMethods.
80
- # AllowedMethods: respond_to_missing?
81
- Style/OptionalBooleanParameter:
82
- Exclude:
83
- - 'lib/appsignal/integrations/delayed_job_plugin.rb'
84
- - 'lib/appsignal/utils/query_params_sanitizer.rb'