appsignal 2.11.8-java → 3.0.1-java
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 +4 -4
- data/.rubocop.yml +4 -1
- data/.rubocop_todo.yml +1 -1
- data/.semaphore/semaphore.yml +88 -111
- data/CHANGELOG.md +24 -0
- data/appsignal.gemspec +1 -1
- data/build_matrix.yml +11 -15
- data/lib/appsignal.rb +2 -29
- data/lib/appsignal/auth_check.rb +2 -8
- data/lib/appsignal/cli.rb +1 -23
- data/lib/appsignal/config.rb +1 -25
- data/lib/appsignal/event_formatter.rb +0 -25
- data/lib/appsignal/helpers/instrumentation.rb +69 -5
- data/lib/appsignal/hooks.rb +6 -13
- data/lib/appsignal/hooks/action_cable.rb +3 -34
- data/lib/appsignal/hooks/active_support_notifications.rb +7 -86
- data/lib/appsignal/hooks/celluloid.rb +5 -9
- data/lib/appsignal/hooks/net_http.rb +2 -12
- data/lib/appsignal/hooks/puma.rb +3 -5
- data/lib/appsignal/hooks/que.rb +1 -1
- data/lib/appsignal/hooks/rake.rb +2 -24
- data/lib/appsignal/hooks/redis.rb +2 -13
- data/lib/appsignal/hooks/resque.rb +2 -43
- data/lib/appsignal/hooks/sidekiq.rb +6 -143
- data/lib/appsignal/hooks/unicorn.rb +3 -24
- data/lib/appsignal/hooks/webmachine.rb +1 -7
- data/lib/appsignal/integrations/action_cable.rb +34 -0
- data/lib/appsignal/integrations/active_support_notifications.rb +77 -0
- data/lib/appsignal/integrations/net_http.rb +16 -0
- data/lib/appsignal/integrations/object.rb +39 -4
- data/lib/appsignal/integrations/padrino.rb +5 -7
- data/lib/appsignal/integrations/que.rb +26 -33
- data/lib/appsignal/integrations/railtie.rb +1 -4
- data/lib/appsignal/integrations/rake.rb +26 -2
- data/lib/appsignal/integrations/redis.rb +17 -0
- data/lib/appsignal/integrations/resque.rb +39 -10
- data/lib/appsignal/integrations/sidekiq.rb +171 -0
- data/lib/appsignal/integrations/unicorn.rb +28 -0
- data/lib/appsignal/integrations/webmachine.rb +22 -24
- data/lib/appsignal/minutely.rb +0 -12
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/auth_check_spec.rb +1 -24
- data/spec/lib/appsignal/cli_spec.rb +1 -1
- data/spec/lib/appsignal/config_spec.rb +2 -66
- data/spec/lib/appsignal/event_formatter_spec.rb +0 -37
- data/spec/lib/appsignal/hooks/celluloid_spec.rb +6 -1
- data/spec/lib/appsignal/hooks/rake_spec.rb +1 -2
- data/spec/lib/appsignal/hooks/redis_spec.rb +50 -15
- data/spec/lib/appsignal/hooks/sidekiq_spec.rb +12 -464
- data/spec/lib/appsignal/hooks/unicorn_spec.rb +14 -3
- data/spec/lib/appsignal/hooks/webmachine_spec.rb +2 -13
- data/spec/lib/appsignal/hooks_spec.rb +6 -22
- data/spec/lib/appsignal/integrations/object_spec.rb +91 -8
- data/spec/lib/appsignal/integrations/padrino_spec.rb +2 -3
- data/spec/lib/appsignal/integrations/railtie_spec.rb +0 -45
- data/spec/lib/appsignal/integrations/sidekiq_spec.rb +524 -0
- data/spec/lib/appsignal/integrations/webmachine_spec.rb +26 -8
- data/spec/lib/appsignal/minutely_spec.rb +0 -19
- data/spec/lib/appsignal/transaction_spec.rb +1 -14
- data/spec/lib/appsignal/transmitter_spec.rb +1 -1
- data/spec/lib/appsignal_spec.rb +162 -116
- data/spec/spec_helper.rb +1 -15
- metadata +11 -21
- data/lib/appsignal/cli/notify_of_deploy.rb +0 -131
- data/lib/appsignal/integrations/object_ruby_19.rb +0 -37
- data/lib/appsignal/integrations/object_ruby_modern.rb +0 -64
- data/lib/appsignal/integrations/resque_active_job.rb +0 -19
- data/lib/appsignal/js_exception_transaction.rb +0 -56
- data/lib/appsignal/rack/js_exception_catcher.rb +0 -80
- data/spec/lib/appsignal/cli/notify_of_deploy_spec.rb +0 -180
- data/spec/lib/appsignal/integrations/object_19_spec.rb +0 -266
- data/spec/lib/appsignal/integrations/resque_active_job_spec.rb +0 -28
- data/spec/lib/appsignal/integrations/resque_spec.rb +0 -28
- data/spec/lib/appsignal/js_exception_transaction_spec.rb +0 -128
- data/spec/lib/appsignal/rack/js_exception_catcher_spec.rb +0 -170
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
# 3.0.1
|
4
|
+
- Fix error occurring on APPSIGNAL_DNS_SERVER environment variable option
|
5
|
+
parsing. PR #709
|
6
|
+
|
7
|
+
# 3.0.0
|
8
|
+
|
9
|
+
Please read our [upgrade from version 2 to 3 guide][upgrade3] before upgrading.
|
10
|
+
|
11
|
+
[upgrade3]: https://docs.appsignal.com/ruby/installation/upgrade-from-2-to-3.html
|
12
|
+
|
13
|
+
- Drop Ruby 1.9 support. PR #683, #682, #688, #694
|
14
|
+
- Require Ruby 2.0 or newer for gem. PR #701
|
15
|
+
- Use Module.prepend for all gem integrations. Fixes #603 in combination with
|
16
|
+
other gems that provide instrumentation for gems. PR #683
|
17
|
+
- Remove deprecated integrations, classes, methods and arguments. PR #685, #686
|
18
|
+
- Deprecate `set_error` and `send_error` error helpers `tags` and `namespace`
|
19
|
+
arguments. PR #702
|
20
|
+
- Add Sidekiq error handler. Report more Sidekiq errors that happen around job
|
21
|
+
execution. PR #699
|
22
|
+
|
23
|
+
# 2.11.9
|
24
|
+
- Fix and simplify Ruby method delegation for object method instrumentation in
|
25
|
+
the different Ruby versions. PR #706
|
26
|
+
|
3
27
|
# 2.11.8
|
4
28
|
- Mark minutely probe thread as fork-safe by @pixeltrix. PR #704
|
5
29
|
|
data/appsignal.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
|
|
21
21
|
gem.name = "appsignal"
|
22
22
|
gem.require_paths = %w[lib ext]
|
23
23
|
gem.version = Appsignal::VERSION
|
24
|
-
gem.required_ruby_version = ">=
|
24
|
+
gem.required_ruby_version = ">= 2.0"
|
25
25
|
# Default extension installer. Overridden by JRuby gemspec as defined in
|
26
26
|
# `Rakefile`.
|
27
27
|
gem.extensions = %w[ext/extconf.rb]
|
data/build_matrix.yml
CHANGED
@@ -58,7 +58,7 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
58
58
|
- name: Validate CI setup
|
59
59
|
env_vars:
|
60
60
|
- name: RUBY_VERSION
|
61
|
-
value: 2.6.
|
61
|
+
value: 2.6.6
|
62
62
|
- name: GEMSET
|
63
63
|
value: no_dependencies
|
64
64
|
- name: BUNDLE_GEMFILE
|
@@ -72,7 +72,7 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
72
72
|
- name: RuboCop
|
73
73
|
env_vars:
|
74
74
|
- name: RUBY_VERSION
|
75
|
-
value: 2.6.
|
75
|
+
value: 2.6.6
|
76
76
|
- name: GEMSET
|
77
77
|
value: no_dependencies
|
78
78
|
- name: BUNDLE_GEMFILE
|
@@ -94,10 +94,6 @@ matrix:
|
|
94
94
|
- "rails-6.0"
|
95
95
|
|
96
96
|
ruby:
|
97
|
-
- ruby: "1.9.3-p551"
|
98
|
-
rubygems: "2.7.8"
|
99
|
-
bundler: "1.17.3"
|
100
|
-
gems: "none"
|
101
97
|
- ruby: "2.0.0-p648"
|
102
98
|
rubygems: "2.7.8"
|
103
99
|
bundler: "1.17.3"
|
@@ -111,12 +107,12 @@ matrix:
|
|
111
107
|
gems: "none"
|
112
108
|
- ruby: "2.3.8"
|
113
109
|
gems: "none"
|
114
|
-
- ruby: "2.4.
|
110
|
+
- ruby: "2.4.10"
|
115
111
|
gems: "none"
|
116
|
-
- ruby: "2.5.
|
112
|
+
- ruby: "2.5.8"
|
117
113
|
gems: "minimal"
|
118
|
-
- ruby: "2.6.
|
119
|
-
- ruby: "2.7.
|
114
|
+
- ruby: "2.6.6"
|
115
|
+
- ruby: "2.7.2"
|
120
116
|
- ruby: "3.0.0"
|
121
117
|
- ruby: "jruby-9.1.17.0"
|
122
118
|
gems: "minimal"
|
@@ -138,15 +134,15 @@ matrix:
|
|
138
134
|
bundler: "1.17.3"
|
139
135
|
exclude:
|
140
136
|
ruby:
|
141
|
-
- "2.6.
|
142
|
-
- "2.7.
|
137
|
+
- "2.6.6"
|
138
|
+
- "2.7.2"
|
143
139
|
- "3.0.0"
|
144
140
|
- gem: "rails-4.2"
|
145
141
|
bundler: "1.17.3"
|
146
142
|
exclude:
|
147
143
|
ruby:
|
148
|
-
- "2.6.
|
149
|
-
- "2.7.
|
144
|
+
- "2.6.6"
|
145
|
+
- "2.7.2"
|
150
146
|
- "3.0.0"
|
151
147
|
- gem: "rails-5.0"
|
152
148
|
exclude:
|
@@ -170,7 +166,7 @@ matrix:
|
|
170
166
|
- "2.1.10"
|
171
167
|
- "2.2.10"
|
172
168
|
- "2.3.8"
|
173
|
-
- "2.4.
|
169
|
+
- "2.4.10"
|
174
170
|
- "jruby-9.1.17.0"
|
175
171
|
- gem: "resque-1"
|
176
172
|
bundler: "1.17.3"
|
data/lib/appsignal.rb
CHANGED
@@ -4,9 +4,9 @@ require "json"
|
|
4
4
|
require "securerandom"
|
5
5
|
|
6
6
|
require "appsignal/logger"
|
7
|
+
require "appsignal/utils/deprecation_message"
|
7
8
|
require "appsignal/helpers/instrumentation"
|
8
9
|
require "appsignal/helpers/metrics"
|
9
|
-
require "appsignal/utils/deprecation_message"
|
10
10
|
|
11
11
|
# AppSignal for Ruby gem's main module.
|
12
12
|
#
|
@@ -18,7 +18,6 @@ module Appsignal
|
|
18
18
|
class << self
|
19
19
|
include Helpers::Instrumentation
|
20
20
|
include Helpers::Metrics
|
21
|
-
include Utils::DeprecationMessage
|
22
21
|
|
23
22
|
# Accessor for the AppSignal configuration.
|
24
23
|
# Return the current AppSignal configuration.
|
@@ -129,7 +128,6 @@ module Appsignal
|
|
129
128
|
config.write_to_environment
|
130
129
|
Appsignal::Extension.start
|
131
130
|
Appsignal::Hooks.load_hooks
|
132
|
-
Appsignal::EventFormatter.initialize_deprecated_formatters
|
133
131
|
initialize_extensions
|
134
132
|
|
135
133
|
if config[:enable_allocation_tracking] && !Appsignal::System.jruby?
|
@@ -222,15 +220,9 @@ module Appsignal
|
|
222
220
|
# Sets the log level and sets the logger. Uses a file-based logger or the
|
223
221
|
# STDOUT-based logger. See the `:log` configuration option.
|
224
222
|
#
|
225
|
-
# @param path_arg [nil] Deprecated param. Use the `:log_path`
|
226
|
-
# configuration option instead.
|
227
223
|
# @return [void]
|
228
224
|
# @since 0.7.0
|
229
|
-
def start_logger
|
230
|
-
if path_arg
|
231
|
-
logger.info("Setting the path in start_logger has no effect anymore, set it in the config instead")
|
232
|
-
end
|
233
|
-
|
225
|
+
def start_logger
|
234
226
|
if config && config[:log] == "file" && config.log_file_path
|
235
227
|
start_file_logger(config.log_file_path)
|
236
228
|
else
|
@@ -285,21 +277,6 @@ module Appsignal
|
|
285
277
|
config && config.active? && extension_loaded?
|
286
278
|
end
|
287
279
|
|
288
|
-
# @deprecated No replacement
|
289
|
-
def is_ignored_error?(error) # rubocop:disable Naming/PredicateName
|
290
|
-
deprecation_message "Appsignal.is_ignored_error? is deprecated " \
|
291
|
-
"with no replacement and will be removed in version 3.0."
|
292
|
-
Appsignal.config[:ignore_errors].include?(error.class.name)
|
293
|
-
end
|
294
|
-
alias :is_ignored_exception? :is_ignored_error?
|
295
|
-
|
296
|
-
# @deprecated No replacement
|
297
|
-
def is_ignored_action?(action) # rubocop:disable Naming/PredicateName
|
298
|
-
deprecation_message "Appsignal.is_ignored_action? is deprecated " \
|
299
|
-
"with no replacement and will be removed in version 3.0."
|
300
|
-
Appsignal.config[:ignore_actions].include?(action)
|
301
|
-
end
|
302
|
-
|
303
280
|
private
|
304
281
|
|
305
282
|
def start_stdout_logger
|
@@ -344,11 +321,7 @@ require "appsignal/marker"
|
|
344
321
|
require "appsignal/minutely"
|
345
322
|
require "appsignal/garbage_collection_profiler"
|
346
323
|
require "appsignal/integrations/railtie" if defined?(::Rails)
|
347
|
-
require "appsignal/integrations/resque"
|
348
|
-
require "appsignal/integrations/resque_active_job"
|
349
324
|
require "appsignal/transaction"
|
350
325
|
require "appsignal/version"
|
351
326
|
require "appsignal/rack/generic_instrumentation"
|
352
|
-
require "appsignal/rack/js_exception_catcher"
|
353
|
-
require "appsignal/js_exception_transaction"
|
354
327
|
require "appsignal/transmitter"
|
data/lib/appsignal/auth_check.rb
CHANGED
@@ -20,16 +20,10 @@ module Appsignal
|
|
20
20
|
# https://push.appsignal.com/1/auth
|
21
21
|
ACTION = "auth".freeze
|
22
22
|
|
23
|
-
attr_reader :config
|
23
|
+
attr_reader :config
|
24
24
|
|
25
|
-
def initialize(config
|
25
|
+
def initialize(config)
|
26
26
|
@config = config
|
27
|
-
if logger # rubocop:disable Style/GuardClause
|
28
|
-
Appsignal::Utils::DeprecationMessage.message \
|
29
|
-
"`Appsignal::AuthCheck.new`'s `logger` argument will be removed " \
|
30
|
-
"in the next major version. Please configure the logger " \
|
31
|
-
"using `Appsignal.logger`."
|
32
|
-
end
|
33
27
|
end
|
34
28
|
|
35
29
|
# Perform push api validation request and return response status code.
|
data/lib/appsignal/cli.rb
CHANGED
@@ -7,12 +7,11 @@ require "appsignal/cli/helpers"
|
|
7
7
|
require "appsignal/cli/demo"
|
8
8
|
require "appsignal/cli/diagnose"
|
9
9
|
require "appsignal/cli/install"
|
10
|
-
require "appsignal/cli/notify_of_deploy"
|
11
10
|
|
12
11
|
module Appsignal
|
13
12
|
# @api private
|
14
13
|
class CLI
|
15
|
-
AVAILABLE_COMMANDS = %w[demo diagnose install
|
14
|
+
AVAILABLE_COMMANDS = %w[demo diagnose install].freeze
|
16
15
|
|
17
16
|
class << self
|
18
17
|
attr_accessor :options
|
@@ -33,8 +32,6 @@ module Appsignal
|
|
33
32
|
Appsignal::CLI::Diagnose.run(options)
|
34
33
|
when :install
|
35
34
|
Appsignal::CLI::Install.run(argv.shift, options)
|
36
|
-
when :notify_of_deploy
|
37
|
-
Appsignal::CLI::NotifyOfDeploy.run(options)
|
38
35
|
end
|
39
36
|
else
|
40
37
|
puts "Command '#{command}' does not exist, run appsignal -h to "\
|
@@ -93,25 +90,6 @@ module Appsignal
|
|
93
90
|
o.on "--[no-]color", "Colorize the output of the diagnose command" do |arg|
|
94
91
|
options[:color] = arg
|
95
92
|
end
|
96
|
-
end,
|
97
|
-
"notify_of_deploy" => OptionParser.new do |o|
|
98
|
-
o.banner = "Usage: appsignal notify_of_deploy [options]"
|
99
|
-
|
100
|
-
o.on "--revision=<revision>", "The revision you're deploying" do |arg|
|
101
|
-
options[:revision] = arg
|
102
|
-
end
|
103
|
-
|
104
|
-
o.on "--user=<user>", "The name of the user that's deploying" do |arg|
|
105
|
-
options[:user] = arg
|
106
|
-
end
|
107
|
-
|
108
|
-
o.on "--environment=<app_env>", "The environment you're deploying to" do |arg|
|
109
|
-
options[:environment] = arg
|
110
|
-
end
|
111
|
-
|
112
|
-
o.on "--name=<name>", "The name of the app (optional)" do |arg|
|
113
|
-
options[:name] = arg
|
114
|
-
end
|
115
93
|
end
|
116
94
|
}
|
117
95
|
end
|
data/lib/appsignal/config.rb
CHANGED
@@ -32,8 +32,6 @@ module Appsignal
|
|
32
32
|
:instrument_redis => true,
|
33
33
|
:instrument_sequel => true,
|
34
34
|
:skip_session_data => false,
|
35
|
-
:enable_frontend_error_catching => false,
|
36
|
-
:frontend_error_catching_path => "/appsignal_error_catcher",
|
37
35
|
:enable_allocation_tracking => true,
|
38
36
|
:enable_gc_instrumentation => false,
|
39
37
|
:enable_host_metrics => true,
|
@@ -49,7 +47,6 @@ module Appsignal
|
|
49
47
|
"APPSIGNAL_PUSH_API_KEY" => :push_api_key,
|
50
48
|
"APPSIGNAL_APP_NAME" => :name,
|
51
49
|
"APPSIGNAL_PUSH_API_ENDPOINT" => :endpoint,
|
52
|
-
"APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH" => :frontend_error_catching_path,
|
53
50
|
"APPSIGNAL_DEBUG" => :debug,
|
54
51
|
"APPSIGNAL_LOG" => :log,
|
55
52
|
"APPSIGNAL_LOG_PATH" => :log_path,
|
@@ -57,7 +54,6 @@ module Appsignal
|
|
57
54
|
"APPSIGNAL_INSTRUMENT_REDIS" => :instrument_redis,
|
58
55
|
"APPSIGNAL_INSTRUMENT_SEQUEL" => :instrument_sequel,
|
59
56
|
"APPSIGNAL_SKIP_SESSION_DATA" => :skip_session_data,
|
60
|
-
"APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING" => :enable_frontend_error_catching,
|
61
57
|
"APPSIGNAL_IGNORE_ACTIONS" => :ignore_actions,
|
62
58
|
"APPSIGNAL_IGNORE_ERRORS" => :ignore_errors,
|
63
59
|
"APPSIGNAL_IGNORE_NAMESPACES" => :ignore_namespaces,
|
@@ -85,8 +81,6 @@ module Appsignal
|
|
85
81
|
ENV_STRING_KEYS = %w[
|
86
82
|
APPSIGNAL_APP_NAME
|
87
83
|
APPSIGNAL_CA_FILE_PATH
|
88
|
-
APPSIGNAL_DNS_SERVERS
|
89
|
-
APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH
|
90
84
|
APPSIGNAL_HOSTNAME
|
91
85
|
APPSIGNAL_HTTP_PROXY
|
92
86
|
APPSIGNAL_LOG
|
@@ -102,7 +96,6 @@ module Appsignal
|
|
102
96
|
APPSIGNAL_ACTIVE
|
103
97
|
APPSIGNAL_DEBUG
|
104
98
|
APPSIGNAL_ENABLE_ALLOCATION_TRACKING
|
105
|
-
APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING
|
106
99
|
APPSIGNAL_ENABLE_GC_INSTRUMENTATION
|
107
100
|
APPSIGNAL_ENABLE_HOST_METRICS
|
108
101
|
APPSIGNAL_ENABLE_MINUTELY_PROBES
|
@@ -118,6 +111,7 @@ module Appsignal
|
|
118
111
|
].freeze
|
119
112
|
# @api private
|
120
113
|
ENV_ARRAY_KEYS = %w[
|
114
|
+
APPSIGNAL_DNS_SERVERS
|
121
115
|
APPSIGNAL_FILTER_PARAMETERS
|
122
116
|
APPSIGNAL_FILTER_SESSION_DATA
|
123
117
|
APPSIGNAL_IGNORE_ACTIONS
|
@@ -126,12 +120,6 @@ module Appsignal
|
|
126
120
|
APPSIGNAL_REQUEST_HEADERS
|
127
121
|
].freeze
|
128
122
|
|
129
|
-
# Mapping of old and deprecated AppSignal configuration keys
|
130
|
-
DEPRECATED_CONFIG_KEY_MAPPING = {
|
131
|
-
:api_key => :push_api_key,
|
132
|
-
:ignore_exceptions => :ignore_errors
|
133
|
-
}.freeze
|
134
|
-
|
135
123
|
# @attribute [r] system_config
|
136
124
|
# Config detected on the system level.
|
137
125
|
# Used in diagnose report.
|
@@ -376,18 +364,6 @@ module Appsignal
|
|
376
364
|
# Used by {#load_from_disk}. No compatibility for env variables or initial config currently.
|
377
365
|
def maintain_backwards_compatibility(configuration)
|
378
366
|
configuration.tap do |config|
|
379
|
-
DEPRECATED_CONFIG_KEY_MAPPING.each do |old_key, new_key|
|
380
|
-
old_config_value = config.delete(old_key)
|
381
|
-
next unless old_config_value
|
382
|
-
deprecation_message \
|
383
|
-
"Old configuration key found. Please update the "\
|
384
|
-
"'#{old_key}' to '#{new_key}'.",
|
385
|
-
logger
|
386
|
-
|
387
|
-
next if config[new_key] # Skip if new key is already in use
|
388
|
-
config[new_key] = old_config_value
|
389
|
-
end
|
390
|
-
|
391
367
|
if config.include?(:working_dir_path)
|
392
368
|
deprecation_message \
|
393
369
|
"'working_dir_path' is deprecated, please use " \
|
@@ -20,20 +20,11 @@ module Appsignal
|
|
20
20
|
@formatters ||= {}
|
21
21
|
end
|
22
22
|
|
23
|
-
def deprecated_formatter_classes
|
24
|
-
@deprecated_formatter_classes ||= {}
|
25
|
-
end
|
26
|
-
|
27
23
|
def formatter_classes
|
28
24
|
@formatter_classes ||= {}
|
29
25
|
end
|
30
26
|
|
31
27
|
def register(name, formatter = nil)
|
32
|
-
unless formatter
|
33
|
-
register_deprecated_formatter(name)
|
34
|
-
return
|
35
|
-
end
|
36
|
-
|
37
28
|
if registered?(name, formatter)
|
38
29
|
logger.warn(
|
39
30
|
"Formatter for '#{name}' already registered, not registering "\
|
@@ -45,12 +36,6 @@ module Appsignal
|
|
45
36
|
initialize_formatter name, formatter
|
46
37
|
end
|
47
38
|
|
48
|
-
def initialize_deprecated_formatters
|
49
|
-
deprecated_formatter_classes.each do |name, formatter|
|
50
|
-
register(name, formatter)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
39
|
def unregister(name, formatter = self)
|
55
40
|
return unless formatter_classes[name] == formatter
|
56
41
|
|
@@ -86,16 +71,6 @@ module Appsignal
|
|
86
71
|
logger.error("'#{ex.message}' when initializing #{name} event formatter")
|
87
72
|
end
|
88
73
|
|
89
|
-
def register_deprecated_formatter(name)
|
90
|
-
deprecation_message \
|
91
|
-
"Formatter for '#{name}' is using a deprecated registration " \
|
92
|
-
"method. This event formatter will not be loaded. " \
|
93
|
-
"Please update the formatter according to the documentation at: " \
|
94
|
-
"https://docs.appsignal.com/ruby/instrumentation/event-formatters.html"
|
95
|
-
|
96
|
-
EventFormatter.deprecated_formatter_classes[name] = self
|
97
|
-
end
|
98
|
-
|
99
74
|
def logger
|
100
75
|
Appsignal.logger
|
101
76
|
end
|
@@ -3,6 +3,8 @@
|
|
3
3
|
module Appsignal
|
4
4
|
module Helpers
|
5
5
|
module Instrumentation # rubocop:disable Metrics/ModuleLength
|
6
|
+
include Appsignal::Utils::DeprecationMessage
|
7
|
+
|
6
8
|
# Creates an AppSignal transaction for the given block.
|
7
9
|
#
|
8
10
|
# If AppSignal is not {.active?} it will still execute the block, but not
|
@@ -139,7 +141,10 @@ module Appsignal
|
|
139
141
|
)
|
140
142
|
yield
|
141
143
|
rescue Exception => error # rubocop:disable Lint/RescueException
|
142
|
-
send_error(error
|
144
|
+
send_error(error) do |transaction|
|
145
|
+
transaction.set_tags(tags) if tags
|
146
|
+
transaction.set_namespace(namespace) if namespace
|
147
|
+
end
|
143
148
|
raise error
|
144
149
|
end
|
145
150
|
alias :listen_for_exception :listen_for_error
|
@@ -164,7 +169,7 @@ module Appsignal
|
|
164
169
|
# Appsignal.send_error(e)
|
165
170
|
# end
|
166
171
|
#
|
167
|
-
# @example Send an exception with tags
|
172
|
+
# @example Send an exception with tags. Deprecated method.
|
168
173
|
# begin
|
169
174
|
# raise "oh no!"
|
170
175
|
# rescue => e
|
@@ -172,17 +177,20 @@ module Appsignal
|
|
172
177
|
# end
|
173
178
|
#
|
174
179
|
# @example Add more metadata to transaction
|
175
|
-
# Appsignal.send_error(e
|
180
|
+
# Appsignal.send_error(e) do |transaction|
|
176
181
|
# transaction.params(:search_query => params[:search_query])
|
177
182
|
# transaction.set_action("my_action_name")
|
183
|
+
# transaction.set_tags(:key => "value")
|
178
184
|
# transaction.set_namespace("my_namespace")
|
179
185
|
# end
|
180
186
|
#
|
181
187
|
# @param error [Exception] The error to send to AppSignal.
|
182
188
|
# @param tags [Hash{String, Symbol => String, Symbol, Integer}]
|
183
189
|
# Additional tags to add to the error. See also {.tag_request}.
|
190
|
+
# This parameter is deprecated. Use the block argument instead.
|
184
191
|
# @param namespace [String] The namespace in which the error occurred.
|
185
192
|
# See also {.set_namespace}.
|
193
|
+
# This parameter is deprecated. Use the block argument instead.
|
186
194
|
# @yield [transaction] yields block to allow modification of the
|
187
195
|
# transaction before it's send.
|
188
196
|
# @yieldparam transaction [Transaction] yields the AppSignal transaction
|
@@ -197,9 +205,30 @@ module Appsignal
|
|
197
205
|
def send_error(
|
198
206
|
error,
|
199
207
|
tags = nil,
|
200
|
-
namespace =
|
208
|
+
namespace = nil
|
201
209
|
)
|
210
|
+
if tags
|
211
|
+
call_location = caller(1..1).first
|
212
|
+
deprecation_message \
|
213
|
+
"The tags argument for `Appsignal.send_error` is deprecated. " \
|
214
|
+
"Please use the block method to set tags instead.\n\n" \
|
215
|
+
" Appsignal.send_error(error) do |transaction|\n" \
|
216
|
+
" transaction.set_tags(#{tags})\n" \
|
217
|
+
" end\n\n" \
|
218
|
+
"Appsignal.send_error called on location: #{call_location}"
|
219
|
+
end
|
220
|
+
if namespace
|
221
|
+
call_location = caller(1..1).first
|
222
|
+
deprecation_message \
|
223
|
+
"The namespace argument for `Appsignal.send_error` is deprecated. " \
|
224
|
+
"Please use the block method to set the namespace instead.\n\n" \
|
225
|
+
" Appsignal.send_error(error) do |transaction|\n" \
|
226
|
+
" transaction.namespace(#{namespace.inspect})\n" \
|
227
|
+
" end\n\n" \
|
228
|
+
"Appsignal.send_error called on location: #{call_location}"
|
229
|
+
end
|
202
230
|
return unless active?
|
231
|
+
|
203
232
|
unless error.is_a?(Exception)
|
204
233
|
logger.error "Appsignal.send_error: Cannot send error. The given " \
|
205
234
|
"value is not an exception: #{error.inspect}"
|
@@ -207,7 +236,7 @@ module Appsignal
|
|
207
236
|
end
|
208
237
|
transaction = Appsignal::Transaction.new(
|
209
238
|
SecureRandom.uuid,
|
210
|
-
namespace,
|
239
|
+
namespace || Appsignal::Transaction::HTTP_REQUEST,
|
211
240
|
Appsignal::Transaction::GenericRequest.new({})
|
212
241
|
)
|
213
242
|
transaction.set_tags(tags) if tags
|
@@ -244,12 +273,26 @@ module Appsignal
|
|
244
273
|
# end
|
245
274
|
# end
|
246
275
|
#
|
276
|
+
# @example Add more metadata to transaction
|
277
|
+
# Appsignal.set_error(e) do |transaction|
|
278
|
+
# transaction.params(:search_query => params[:search_query])
|
279
|
+
# transaction.set_action("my_action_name")
|
280
|
+
# transaction.set_tags(:key => "value")
|
281
|
+
# transaction.set_namespace("my_namespace")
|
282
|
+
# end
|
283
|
+
#
|
247
284
|
# @param exception [Exception] The error to add to the current
|
248
285
|
# transaction.
|
249
286
|
# @param tags [Hash{String, Symbol => String, Symbol, Integer}]
|
250
287
|
# Additional tags to add to the error. See also {.tag_request}.
|
288
|
+
# This parameter is deprecated. Use the block argument instead.
|
251
289
|
# @param namespace [String] The namespace in which the error occurred.
|
252
290
|
# See also {.set_namespace}.
|
291
|
+
# This parameter is deprecated. Use the block argument instead.
|
292
|
+
# @yield [transaction] yields block to allow modification of the
|
293
|
+
# transaction.
|
294
|
+
# @yieldparam transaction [Transaction] yields the AppSignal transaction
|
295
|
+
# used to store the error.
|
253
296
|
# @return [void]
|
254
297
|
#
|
255
298
|
# @see Transaction#set_error
|
@@ -257,6 +300,26 @@ module Appsignal
|
|
257
300
|
# Exception handling guide
|
258
301
|
# @since 0.6.6
|
259
302
|
def set_error(exception, tags = nil, namespace = nil)
|
303
|
+
if tags
|
304
|
+
call_location = caller(1..1).first
|
305
|
+
deprecation_message \
|
306
|
+
"The tags argument for `Appsignal.set_error` is deprecated. " \
|
307
|
+
"Please use the block method to set tags instead.\n\n" \
|
308
|
+
" Appsignal.set_error(error) do |transaction|\n" \
|
309
|
+
" transaction.set_tags(#{tags})\n" \
|
310
|
+
" end\n\n" \
|
311
|
+
"Appsignal.set_error called on location: #{call_location}"
|
312
|
+
end
|
313
|
+
if namespace
|
314
|
+
call_location = caller(1..1).first
|
315
|
+
deprecation_message \
|
316
|
+
"The namespace argument for `Appsignal.set_error` is deprecated. " \
|
317
|
+
"Please use the block method to set the namespace instead.\n\n" \
|
318
|
+
" Appsignal.set_error(error) do |transaction|\n" \
|
319
|
+
" transaction.namespace(#{namespace.inspect})\n" \
|
320
|
+
" end\n\n" \
|
321
|
+
"Appsignal.set_error called on location: #{call_location}"
|
322
|
+
end
|
260
323
|
unless exception.is_a?(Exception)
|
261
324
|
logger.error "Appsignal.set_error: Cannot set error. The given " \
|
262
325
|
"value is not an exception: #{exception.inspect}"
|
@@ -267,6 +330,7 @@ module Appsignal
|
|
267
330
|
transaction.set_error(exception)
|
268
331
|
transaction.set_tags(tags) if tags
|
269
332
|
transaction.set_namespace(namespace) if namespace
|
333
|
+
yield transaction if block_given?
|
270
334
|
end
|
271
335
|
alias :set_exception :set_error
|
272
336
|
alias :add_exception :set_error
|