appsignal 4.5.17 → 4.6.0
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/CHANGELOG.md +33 -0
- data/CLAUDE.md +177 -0
- data/README.md +17 -0
- data/appsignal.gemspec +1 -0
- data/build_matrix.yml +29 -0
- data/lib/appsignal/auth_check.rb +3 -3
- data/lib/appsignal/check_in/cron.rb +1 -1
- data/lib/appsignal/check_in/event.rb +1 -1
- data/lib/appsignal/check_in/scheduler.rb +3 -1
- data/lib/appsignal/check_in.rb +9 -6
- data/lib/appsignal/cli/diagnose.rb +1 -1
- data/lib/appsignal/cli.rb +1 -1
- data/lib/appsignal/config.rb +231 -30
- data/lib/appsignal/custom_marker.rb +3 -3
- data/lib/appsignal/environment.rb +7 -1
- data/lib/appsignal/event_formatter/action_view/render_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/active_record/instantiation_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/active_record/sql_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/elastic_search/search_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/faraday/request_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/rom/sql_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/sequel/sql_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/view_component/render_formatter.rb +1 -1
- data/lib/appsignal/event_formatter.rb +41 -3
- data/lib/appsignal/extension.rb +1 -1
- data/lib/appsignal/garbage_collection.rb +1 -1
- data/lib/appsignal/helpers/instrumentation.rb +82 -35
- data/lib/appsignal/helpers/metrics.rb +12 -9
- data/lib/appsignal/hooks/action_cable.rb +1 -1
- data/lib/appsignal/hooks/action_mailer.rb +1 -0
- data/lib/appsignal/hooks/active_job.rb +1 -1
- data/lib/appsignal/hooks/active_support_notifications.rb +1 -1
- data/lib/appsignal/hooks/at_exit.rb +1 -1
- data/lib/appsignal/hooks/celluloid.rb +1 -1
- data/lib/appsignal/hooks/data_mapper.rb +1 -1
- data/lib/appsignal/hooks/delayed_job.rb +1 -1
- data/lib/appsignal/hooks/dry_monitor.rb +1 -1
- data/lib/appsignal/hooks/excon.rb +1 -1
- data/lib/appsignal/hooks/gvl.rb +1 -1
- data/lib/appsignal/hooks/http.rb +1 -1
- data/lib/appsignal/hooks/mongo_ruby_driver.rb +1 -1
- data/lib/appsignal/hooks/mri.rb +1 -1
- data/lib/appsignal/hooks/net_http.rb +1 -1
- data/lib/appsignal/hooks/ownership.rb +1 -1
- data/lib/appsignal/hooks/passenger.rb +1 -1
- data/lib/appsignal/hooks/puma.rb +1 -1
- data/lib/appsignal/hooks/que.rb +1 -1
- data/lib/appsignal/hooks/rake.rb +1 -1
- data/lib/appsignal/hooks/redis.rb +1 -1
- data/lib/appsignal/hooks/redis_client.rb +1 -1
- data/lib/appsignal/hooks/resque.rb +1 -1
- data/lib/appsignal/hooks/sequel.rb +2 -1
- data/lib/appsignal/hooks/shoryuken.rb +1 -1
- data/lib/appsignal/hooks/sidekiq.rb +1 -0
- data/lib/appsignal/hooks/unicorn.rb +1 -1
- data/lib/appsignal/hooks/webmachine.rb +1 -1
- data/lib/appsignal/hooks.rb +5 -3
- data/lib/appsignal/integrations/action_cable.rb +1 -1
- data/lib/appsignal/integrations/active_support_notifications.rb +1 -1
- data/lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb +1 -1
- data/lib/appsignal/integrations/data_mapper.rb +1 -1
- data/lib/appsignal/integrations/delayed_job_plugin.rb +1 -1
- data/lib/appsignal/integrations/dry_monitor.rb +1 -1
- data/lib/appsignal/integrations/excon.rb +1 -1
- data/lib/appsignal/integrations/http.rb +1 -1
- data/lib/appsignal/integrations/mongo_ruby_driver.rb +1 -1
- data/lib/appsignal/integrations/net_http.rb +1 -1
- data/lib/appsignal/integrations/object.rb +18 -2
- data/lib/appsignal/integrations/ownership.rb +1 -1
- data/lib/appsignal/integrations/puma.rb +1 -1
- data/lib/appsignal/integrations/que.rb +1 -1
- data/lib/appsignal/integrations/railtie.rb +2 -2
- data/lib/appsignal/integrations/rake.rb +2 -2
- data/lib/appsignal/integrations/redis.rb +1 -1
- data/lib/appsignal/integrations/redis_client.rb +1 -1
- data/lib/appsignal/integrations/resque.rb +2 -2
- data/lib/appsignal/integrations/shoryuken.rb +1 -1
- data/lib/appsignal/integrations/sidekiq.rb +3 -3
- data/lib/appsignal/integrations/unicorn.rb +1 -1
- data/lib/appsignal/integrations/webmachine.rb +1 -1
- data/lib/appsignal/internal_errors.rb +2 -2
- data/lib/appsignal/loaders.rb +1 -1
- data/lib/appsignal/logger.rb +36 -19
- data/lib/appsignal/marker.rb +1 -1
- data/lib/appsignal/probes/gvl.rb +4 -3
- data/lib/appsignal/probes/helpers.rb +1 -1
- data/lib/appsignal/probes/mri.rb +3 -3
- data/lib/appsignal/probes/sidekiq.rb +4 -3
- data/lib/appsignal/probes.rb +20 -15
- data/lib/appsignal/rack.rb +1 -1
- data/lib/appsignal/sample_data.rb +31 -12
- data/lib/appsignal/span.rb +1 -1
- data/lib/appsignal/system.rb +9 -8
- data/lib/appsignal/transaction.rb +72 -52
- data/lib/appsignal/transmitter.rb +1 -1
- data/lib/appsignal/utils.rb +1 -1
- data/lib/appsignal/version.rb +2 -1
- data/lib/appsignal.rb +22 -14
- data/lib/puma/plugin/appsignal.rb +1 -1
- data/sig/appsignal.rbi +2599 -0
- data/sig/appsignal.rbs +2420 -0
- metadata +20 -6
@@ -4,20 +4,23 @@ require "json"
|
|
4
4
|
|
5
5
|
module Appsignal
|
6
6
|
class Transaction
|
7
|
+
# @return [String]
|
7
8
|
HTTP_REQUEST = "http_request"
|
9
|
+
# @return [String]
|
8
10
|
BACKGROUND_JOB = "background_job"
|
9
|
-
#
|
11
|
+
# @!visibility private
|
10
12
|
ACTION_CABLE = "action_cable"
|
11
|
-
#
|
13
|
+
# @!visibility private
|
12
14
|
BLANK = ""
|
13
|
-
#
|
15
|
+
# @!visibility private
|
14
16
|
ALLOWED_TAG_KEY_TYPES = [Symbol, String].freeze
|
15
|
-
#
|
17
|
+
# @!visibility private
|
16
18
|
ALLOWED_TAG_VALUE_TYPES = [Symbol, String, Integer, TrueClass, FalseClass].freeze
|
17
|
-
#
|
19
|
+
# @!visibility private
|
18
20
|
BREADCRUMB_LIMIT = 20
|
19
|
-
#
|
21
|
+
# @!visibility private
|
20
22
|
ERROR_CAUSES_LIMIT = 10
|
23
|
+
# @!visibility private
|
21
24
|
ERRORS_LIMIT = 10
|
22
25
|
|
23
26
|
class << self
|
@@ -49,12 +52,13 @@ module Appsignal
|
|
49
52
|
end
|
50
53
|
end
|
51
54
|
|
52
|
-
# @api private
|
53
|
-
# @return [Array<Proc>]
|
54
55
|
# Add a block, if given, to be executed after a transaction is created.
|
55
56
|
# The block will be called with the transaction as an argument.
|
56
57
|
# Returns the array of blocks that will be executed after a transaction
|
57
58
|
# is created.
|
59
|
+
#
|
60
|
+
# @return [Array<Proc>]
|
61
|
+
# @!visibility private
|
58
62
|
def after_create(&block)
|
59
63
|
@after_create ||= Set.new
|
60
64
|
|
@@ -63,8 +67,6 @@ module Appsignal
|
|
63
67
|
@after_create << block
|
64
68
|
end
|
65
69
|
|
66
|
-
# @api private
|
67
|
-
# @return [Array<Proc>]
|
68
70
|
# Add a block, if given, to be executed before a transaction is completed.
|
69
71
|
# This happens after duplicating the transaction for each error that was
|
70
72
|
# reported in the transaction -- that is, when a transaction with
|
@@ -75,6 +77,9 @@ module Appsignal
|
|
75
77
|
# and the error reported by the transaction, if any, as the second argument.
|
76
78
|
# Returns the array of blocks that will be executed before a transaction is
|
77
79
|
# completed.
|
80
|
+
#
|
81
|
+
# @return [Array<Proc>]
|
82
|
+
# @!visibility private
|
78
83
|
def before_complete(&block)
|
79
84
|
@before_complete ||= Set.new
|
80
85
|
|
@@ -83,7 +88,7 @@ module Appsignal
|
|
83
88
|
@before_complete << block
|
84
89
|
end
|
85
90
|
|
86
|
-
#
|
91
|
+
# @!visibility private
|
87
92
|
def set_current_transaction(transaction)
|
88
93
|
Thread.current[:appsignal_transaction] = transaction
|
89
94
|
end
|
@@ -91,7 +96,7 @@ module Appsignal
|
|
91
96
|
# Set the current for the duration of the given block.
|
92
97
|
# It restores the original transaction (if any) when the block has executed.
|
93
98
|
#
|
94
|
-
#
|
99
|
+
# @!visibility private
|
95
100
|
def with_transaction(transaction)
|
96
101
|
original_transaction = current if current?
|
97
102
|
set_current_transaction(transaction)
|
@@ -104,7 +109,7 @@ module Appsignal
|
|
104
109
|
# active.
|
105
110
|
#
|
106
111
|
# @see .current?
|
107
|
-
# @return [
|
112
|
+
# @return [Appsignal::Transaction, Appsignal::Transaction::NilTransaction]
|
108
113
|
def current
|
109
114
|
Thread.current[:appsignal_transaction] || NilTransaction.new
|
110
115
|
end
|
@@ -120,6 +125,8 @@ module Appsignal
|
|
120
125
|
|
121
126
|
# Complete the currently active transaction and unset it as the active
|
122
127
|
# transaction.
|
128
|
+
#
|
129
|
+
# @return [void]
|
123
130
|
def complete_current!
|
124
131
|
current.complete
|
125
132
|
rescue => e
|
@@ -131,28 +138,28 @@ module Appsignal
|
|
131
138
|
end
|
132
139
|
|
133
140
|
# Remove current transaction from current Thread.
|
134
|
-
#
|
141
|
+
# @!visibility private
|
135
142
|
def clear_current_transaction!
|
136
143
|
Thread.current[:appsignal_transaction] = nil
|
137
144
|
end
|
138
145
|
|
139
|
-
#
|
146
|
+
# @!visibility private
|
140
147
|
def last_errors
|
141
148
|
@last_errors ||= []
|
142
149
|
end
|
143
150
|
|
144
|
-
#
|
151
|
+
# @!visibility private
|
145
152
|
attr_writer :last_errors
|
146
153
|
end
|
147
154
|
|
148
|
-
#
|
155
|
+
# @!visibility private
|
149
156
|
attr_reader :transaction_id, :action, :namespace
|
150
157
|
|
151
158
|
# Use {.create} to create new transactions.
|
152
159
|
#
|
153
160
|
# @param namespace [String] Namespace of the to be created transaction.
|
154
161
|
# @see create
|
155
|
-
#
|
162
|
+
# @!visibility private
|
156
163
|
def initialize(namespace, id: SecureRandom.uuid, ext: nil)
|
157
164
|
@transaction_id = id
|
158
165
|
@action = nil
|
@@ -181,22 +188,22 @@ module Appsignal
|
|
181
188
|
run_after_create_hooks
|
182
189
|
end
|
183
190
|
|
184
|
-
#
|
191
|
+
# @!visibility private
|
185
192
|
def duplicate?
|
186
193
|
@is_duplicate
|
187
194
|
end
|
188
195
|
|
189
|
-
#
|
196
|
+
# @!visibility private
|
190
197
|
def nil_transaction?
|
191
198
|
false
|
192
199
|
end
|
193
200
|
|
194
|
-
#
|
201
|
+
# @!visibility private
|
195
202
|
def completed?
|
196
203
|
@completed
|
197
204
|
end
|
198
205
|
|
199
|
-
#
|
206
|
+
# @!visibility private
|
200
207
|
def complete
|
201
208
|
if discarded?
|
202
209
|
Appsignal.internal_logger.debug "Skipping transaction '#{transaction_id}' " \
|
@@ -248,37 +255,37 @@ module Appsignal
|
|
248
255
|
@ext.complete
|
249
256
|
end
|
250
257
|
|
251
|
-
#
|
258
|
+
# @!visibility private
|
252
259
|
def pause!
|
253
260
|
@paused = true
|
254
261
|
end
|
255
262
|
|
256
|
-
#
|
263
|
+
# @!visibility private
|
257
264
|
def resume!
|
258
265
|
@paused = false
|
259
266
|
end
|
260
267
|
|
261
|
-
#
|
268
|
+
# @!visibility private
|
262
269
|
def paused?
|
263
270
|
@paused == true
|
264
271
|
end
|
265
272
|
|
266
|
-
#
|
273
|
+
# @!visibility private
|
267
274
|
def discard!
|
268
275
|
@discarded = true
|
269
276
|
end
|
270
277
|
|
271
|
-
#
|
278
|
+
# @!visibility private
|
272
279
|
def restore!
|
273
280
|
@discarded = false
|
274
281
|
end
|
275
282
|
|
276
|
-
#
|
283
|
+
# @!visibility private
|
277
284
|
def discarded?
|
278
285
|
@discarded == true
|
279
286
|
end
|
280
287
|
|
281
|
-
#
|
288
|
+
# @!visibility private
|
282
289
|
def store(key)
|
283
290
|
@store[key]
|
284
291
|
end
|
@@ -291,9 +298,11 @@ module Appsignal
|
|
291
298
|
# block is leading and the argument will _not_ be used.
|
292
299
|
#
|
293
300
|
# @since 4.0.0
|
294
|
-
# @param given_params [Hash] The parameters to set on the
|
301
|
+
# @param given_params [Hash<String, Object>, Array<Object>] The parameters to set on the
|
302
|
+
# transaction.
|
295
303
|
# @yield This block is called when the transaction is sampled. The block's
|
296
304
|
# return value will become the new parameters.
|
305
|
+
# @yieldreturn [Hash<String, Object>, Array<Object>]
|
297
306
|
# @return [void]
|
298
307
|
#
|
299
308
|
# @see Helpers::Instrumentation#add_params
|
@@ -304,9 +313,9 @@ module Appsignal
|
|
304
313
|
end
|
305
314
|
alias :set_params :add_params
|
306
315
|
|
307
|
-
# @api private
|
308
316
|
# @since 4.0.0
|
309
317
|
# @return [void]
|
318
|
+
# @!visibility private
|
310
319
|
#
|
311
320
|
# @see Helpers::Instrumentation#set_empty_params!
|
312
321
|
def set_empty_params!
|
@@ -315,12 +324,14 @@ module Appsignal
|
|
315
324
|
|
316
325
|
# Add parameters to the transaction if not already set.
|
317
326
|
#
|
318
|
-
# @api private
|
319
327
|
# @since 4.0.0
|
320
|
-
# @param given_params [Hash] The parameters to set on the
|
328
|
+
# @param given_params [Hash<String, Object>, Array<Object>] The parameters to set on the
|
329
|
+
# transaction if none are already set.
|
321
330
|
# @yield This block is called when the transaction is sampled. The block's
|
322
331
|
# return value will become the new parameters.
|
332
|
+
# @yieldreturn [Hash<String, Object>, Array<Object>]
|
323
333
|
# @return [void]
|
334
|
+
# @!visibility private
|
324
335
|
#
|
325
336
|
# @see #add_params
|
326
337
|
def add_params_if_nil(given_params = nil, &block)
|
@@ -333,7 +344,7 @@ module Appsignal
|
|
333
344
|
# When this method is called multiple times, it will merge the tags.
|
334
345
|
#
|
335
346
|
# @since 4.0.0
|
336
|
-
# @param given_tags [Hash] Collection of tags.
|
347
|
+
# @param given_tags [Hash<String, Object>] Collection of tags.
|
337
348
|
# @option given_tags [String, Symbol, Integer] :any
|
338
349
|
# The name of the tag as a Symbol.
|
339
350
|
# @option given_tags [String, Symbol, Integer] "any"
|
@@ -356,9 +367,10 @@ module Appsignal
|
|
356
367
|
# the block is leading and the argument will _not_ be used.
|
357
368
|
#
|
358
369
|
# @since 4.0.0
|
359
|
-
# @param given_session_data [Hash] A hash containing session data.
|
370
|
+
# @param given_session_data [Hash<String, Object>] A hash containing session data.
|
360
371
|
# @yield This block is called when the transaction is sampled. The block's
|
361
372
|
# return value will become the new session data.
|
373
|
+
# @yieldreturn [Hash<String, Object>]
|
362
374
|
# @return [void]
|
363
375
|
#
|
364
376
|
# @see Helpers::Instrumentation#add_session_data
|
@@ -375,12 +387,13 @@ module Appsignal
|
|
375
387
|
# the `given_session_data` argument is leading and the block will _not_ be
|
376
388
|
# called.
|
377
389
|
#
|
378
|
-
# @api private
|
379
390
|
# @since 4.0.0
|
380
|
-
# @param given_session_data [Hash] A hash containing session data.
|
391
|
+
# @param given_session_data [Hash<String, Object>] A hash containing session data.
|
381
392
|
# @yield This block is called when the transaction is sampled. The block's
|
382
393
|
# return value will become the new session data.
|
394
|
+
# @yieldreturn [Hash<String, Object>]
|
383
395
|
# @return [void]
|
396
|
+
# @!visibility private
|
384
397
|
#
|
385
398
|
# @see #add_session_data
|
386
399
|
# @see https://docs.appsignal.com/guides/custom-data/sample-data.html
|
@@ -393,9 +406,10 @@ module Appsignal
|
|
393
406
|
# Add headers to the transaction.
|
394
407
|
#
|
395
408
|
# @since 4.0.0
|
396
|
-
# @param given_headers [Hash] A hash containing headers.
|
409
|
+
# @param given_headers [Hash<String, Object>] A hash containing headers.
|
397
410
|
# @yield This block is called when the transaction is sampled. The block's
|
398
411
|
# return value will become the new headers.
|
412
|
+
# @yieldreturn [Hash<String, Object>]
|
399
413
|
# @return [void]
|
400
414
|
#
|
401
415
|
# @see Helpers::Instrumentation#add_headers
|
@@ -411,12 +425,13 @@ module Appsignal
|
|
411
425
|
# When both the `given_headers` and a block is given to this method,
|
412
426
|
# the block is leading and the argument will _not_ be used.
|
413
427
|
#
|
414
|
-
# @api private
|
415
428
|
# @since 4.0.0
|
416
|
-
# @param given_headers [Hash] A hash containing headers.
|
429
|
+
# @param given_headers [Hash<String, Object>] A hash containing headers.
|
417
430
|
# @yield This block is called when the transaction is sampled. The block's
|
418
431
|
# return value will become the new headers.
|
432
|
+
# @yieldreturn [Hash<String, Object>]
|
419
433
|
# @return [void]
|
434
|
+
# @!visibility private
|
420
435
|
#
|
421
436
|
# @see #add_headers
|
422
437
|
# @see https://docs.appsignal.com/guides/custom-data/sample-data.html
|
@@ -429,7 +444,8 @@ module Appsignal
|
|
429
444
|
# Add custom data to the transaction.
|
430
445
|
#
|
431
446
|
# @since 4.0.0
|
432
|
-
# @param data [Hash
|
447
|
+
# @param data [Hash<Object, Object>, Array<Object>] Custom data to add to
|
448
|
+
# the transaction.
|
433
449
|
# @return [void]
|
434
450
|
#
|
435
451
|
# @see Helpers::Instrumentation#add_custom_data
|
@@ -446,9 +462,9 @@ module Appsignal
|
|
446
462
|
# e.g. "UI", "Network", "Navigation", "Console".
|
447
463
|
# @param action [String] name of breadcrumb
|
448
464
|
# e.g "The user clicked a button", "HTTP 500 from http://blablabla.com"
|
449
|
-
# @
|
450
|
-
# @
|
451
|
-
# @
|
465
|
+
# @param message [String] optional message in string format
|
466
|
+
# @param metadata [Hash<String,String>] key/value metadata in <string, string> format
|
467
|
+
# @param time [Time] time of breadcrumb, should respond to `.to_i` defaults to `Time.now.utc`
|
452
468
|
# @return [void]
|
453
469
|
#
|
454
470
|
# @see Appsignal.add_breadcrumb
|
@@ -498,10 +514,10 @@ module Appsignal
|
|
498
514
|
# Appsignal.set_action_if_nil("bar")
|
499
515
|
# # Transaction action will be "foo"
|
500
516
|
#
|
501
|
-
# @api private
|
502
517
|
# @since 2.2.0
|
503
518
|
# @param action [String]
|
504
519
|
# @return [void]
|
520
|
+
# @!visibility private
|
505
521
|
#
|
506
522
|
# @see #set_action
|
507
523
|
def set_action_if_nil(action)
|
@@ -552,7 +568,7 @@ module Appsignal
|
|
552
568
|
Appsignal.internal_logger.warn("Queue start value #{start} is too big")
|
553
569
|
end
|
554
570
|
|
555
|
-
#
|
571
|
+
# @!visibility private
|
556
572
|
def set_metadata(key, value)
|
557
573
|
return unless key && value
|
558
574
|
return if Appsignal.config[:filter_metadata].include?(key.to_s)
|
@@ -560,7 +576,7 @@ module Appsignal
|
|
560
576
|
@ext.set_metadata(key, value)
|
561
577
|
end
|
562
578
|
|
563
|
-
#
|
579
|
+
# @!visibility private
|
564
580
|
# @see Appsignal::Helpers::Instrumentation#report_error
|
565
581
|
def add_error(error, &block)
|
566
582
|
unless error.is_a?(Exception)
|
@@ -588,7 +604,7 @@ module Appsignal
|
|
588
604
|
alias :set_error :add_error
|
589
605
|
alias_method :add_exception, :add_error
|
590
606
|
|
591
|
-
#
|
607
|
+
# @!visibility private
|
592
608
|
# @see Helpers::Instrumentation#instrument
|
593
609
|
def start_event
|
594
610
|
return if paused?
|
@@ -596,7 +612,7 @@ module Appsignal
|
|
596
612
|
@ext.start_event(0)
|
597
613
|
end
|
598
614
|
|
599
|
-
#
|
615
|
+
# @!visibility private
|
600
616
|
# @see Helpers::Instrumentation#instrument
|
601
617
|
def finish_event(name, title, body, body_format = Appsignal::EventFormatter::DEFAULT)
|
602
618
|
return if paused?
|
@@ -610,7 +626,7 @@ module Appsignal
|
|
610
626
|
)
|
611
627
|
end
|
612
628
|
|
613
|
-
#
|
629
|
+
# @!visibility private
|
614
630
|
# @see Helpers::Instrumentation#instrument
|
615
631
|
def record_event(name, title, body, duration, body_format = Appsignal::EventFormatter::DEFAULT)
|
616
632
|
return if paused?
|
@@ -625,7 +641,7 @@ module Appsignal
|
|
625
641
|
)
|
626
642
|
end
|
627
643
|
|
628
|
-
#
|
644
|
+
# @!visibility private
|
629
645
|
# @see Helpers::Instrumentation#instrument
|
630
646
|
def instrument(name, title = nil, body = nil, body_format = Appsignal::EventFormatter::DEFAULT)
|
631
647
|
start_event
|
@@ -634,7 +650,7 @@ module Appsignal
|
|
634
650
|
finish_event(name, title, body, body_format)
|
635
651
|
end
|
636
652
|
|
637
|
-
#
|
653
|
+
# @!visibility private
|
638
654
|
def to_h
|
639
655
|
JSON.parse(@ext.to_json)
|
640
656
|
end
|
@@ -642,9 +658,11 @@ module Appsignal
|
|
642
658
|
|
643
659
|
protected
|
644
660
|
|
661
|
+
# @!visibility private
|
645
662
|
attr_writer :is_duplicate, :tags, :custom_data, :breadcrumbs, :params,
|
646
663
|
:session_data, :headers
|
647
664
|
|
665
|
+
# @!visibility private
|
648
666
|
def internal_set_error(error, &block)
|
649
667
|
_set_error(error) if @error_blocks.empty?
|
650
668
|
|
@@ -914,6 +932,8 @@ module Appsignal
|
|
914
932
|
# Stub that is returned by {Transaction.current} if there is no current
|
915
933
|
# transaction, so that it's still safe to call methods on it if there is no
|
916
934
|
# current transaction.
|
935
|
+
#
|
936
|
+
# @!visibility private
|
917
937
|
class NilTransaction
|
918
938
|
def method_missing(_method, *args, &block)
|
919
939
|
end
|
data/lib/appsignal/utils.rb
CHANGED
data/lib/appsignal/version.rb
CHANGED
data/lib/appsignal.rb
CHANGED
@@ -39,7 +39,7 @@ module Appsignal
|
|
39
39
|
# Can be `nil` if extension has not been loaded yet. See
|
40
40
|
# {.extension_loaded?} for a boolean return value.
|
41
41
|
#
|
42
|
-
#
|
42
|
+
# @!visibility private
|
43
43
|
# @return [Boolean, nil]
|
44
44
|
# @see Extension
|
45
45
|
# @see extension_loaded?
|
@@ -57,7 +57,7 @@ module Appsignal
|
|
57
57
|
# {.start}) the contents of the "in memory logger" is written to the new
|
58
58
|
# logger.
|
59
59
|
#
|
60
|
-
#
|
60
|
+
# @!visibility private
|
61
61
|
# @return [Utils::IntegrationLogger or Utils::IntegrationMemoryLogger]
|
62
62
|
# @see start
|
63
63
|
attr_writer :internal_logger
|
@@ -71,11 +71,11 @@ module Appsignal
|
|
71
71
|
# If the value is `nil`, no error was encountered or AppSignal wasn't
|
72
72
|
# started yet.
|
73
73
|
#
|
74
|
-
# @return [
|
74
|
+
# @return [nil, Exception]
|
75
75
|
attr_reader :config_error
|
76
76
|
alias config_error? config_error
|
77
77
|
|
78
|
-
#
|
78
|
+
# @!visibility private
|
79
79
|
def testing?
|
80
80
|
false
|
81
81
|
end
|
@@ -163,9 +163,12 @@ module Appsignal
|
|
163
163
|
|
164
164
|
# PRIVATE METHOD. DO NOT USE.
|
165
165
|
#
|
166
|
-
# @param env_param [String,
|
167
|
-
# the environment CLI option value.
|
168
|
-
#
|
166
|
+
# @param env_param [String, nil] Used by diagnose CLI to pass through
|
167
|
+
# the environment CLI option value. If nil, the environment will be
|
168
|
+
# auto-detected.
|
169
|
+
# @param block [Proc] Optional block to configure the config object.
|
170
|
+
# @return [void]
|
171
|
+
# @!visibility private
|
169
172
|
def _load_config!(env_param = nil, &block) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
|
170
173
|
# Ensure it's not an empty string if it's a value
|
171
174
|
proper_env_param = env_param&.to_s&.strip
|
@@ -305,7 +308,8 @@ module Appsignal
|
|
305
308
|
# @param env_param [String, Symbol] The environment to load.
|
306
309
|
# @param root_path [String] The path to look the `config/appsignal.yml` config file in.
|
307
310
|
# Defaults to the current working directory.
|
308
|
-
# @yield [
|
311
|
+
# @yield [config_dsl] Gives the configuration DSL instance to the block.
|
312
|
+
# @yieldparam config_dsl [Appsignal::Config::ConfigDSL] The configuration DSL object
|
309
313
|
# @return [void]
|
310
314
|
# @see config
|
311
315
|
# @see Config
|
@@ -397,12 +401,12 @@ module Appsignal
|
|
397
401
|
nil
|
398
402
|
end
|
399
403
|
|
400
|
-
#
|
404
|
+
# @!visibility private
|
401
405
|
def get_server_state(key)
|
402
406
|
Appsignal::Extension.get_server_state(key)
|
403
407
|
end
|
404
408
|
|
405
|
-
#
|
409
|
+
# @!visibility private
|
406
410
|
def in_memory_logger
|
407
411
|
@in_memory_logger ||=
|
408
412
|
Appsignal::Utils::IntegrationMemoryLogger.new.tap do |l|
|
@@ -410,12 +414,12 @@ module Appsignal
|
|
410
414
|
end
|
411
415
|
end
|
412
416
|
|
413
|
-
#
|
417
|
+
# @!visibility private
|
414
418
|
def internal_logger
|
415
419
|
@internal_logger ||= in_memory_logger
|
416
420
|
end
|
417
421
|
|
418
|
-
#
|
422
|
+
# @!visibility private
|
419
423
|
def log_formatter(prefix = nil)
|
420
424
|
pre = "#{prefix}: " if prefix
|
421
425
|
proc do |severity, datetime, _progname, msg|
|
@@ -429,7 +433,7 @@ module Appsignal
|
|
429
433
|
# Sets the log level and sets the logger. Uses a file-based logger or the
|
430
434
|
# STDOUT-based logger. See the `:log` configuration option.
|
431
435
|
#
|
432
|
-
#
|
436
|
+
# @!visibility private
|
433
437
|
# @return [void]
|
434
438
|
def _start_logger
|
435
439
|
if config && config[:log] == "file" && config.log_file_path
|
@@ -499,7 +503,7 @@ module Appsignal
|
|
499
503
|
config&.active? && extension_loaded?
|
500
504
|
end
|
501
505
|
|
502
|
-
#
|
506
|
+
# @!visibility private
|
503
507
|
def dsl_config_file_loaded?
|
504
508
|
defined?(@dsl_config_file_loaded) ? true : false
|
505
509
|
end
|
@@ -613,6 +617,10 @@ module Appsignal
|
|
613
617
|
Appsignal::Environment.report_supported_gems
|
614
618
|
end
|
615
619
|
end
|
620
|
+
|
621
|
+
# @!visibility private
|
622
|
+
module Integrations
|
623
|
+
end
|
616
624
|
end
|
617
625
|
|
618
626
|
require "appsignal/internal_errors"
|