appsignal 3.0.18-java → 3.0.21-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.semaphore/semaphore.yml +134 -0
  3. data/CHANGELOG.md +44 -0
  4. data/appsignal.gemspec +1 -0
  5. data/build_matrix.yml +8 -1
  6. data/ext/base.rb +3 -2
  7. data/gemfiles/rails-6.1.gemfile +7 -0
  8. data/gemfiles/rails-7.0.gemfile +1 -1
  9. data/lib/appsignal/cli/diagnose/utils.rb +0 -14
  10. data/lib/appsignal/cli/diagnose.rb +6 -5
  11. data/lib/appsignal/config.rb +54 -21
  12. data/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb +7 -18
  13. data/lib/appsignal/event_formatter/sequel/sql_formatter.rb +24 -0
  14. data/lib/appsignal/system.rb +0 -4
  15. data/lib/appsignal/transaction.rb +2 -2
  16. data/lib/appsignal/version.rb +1 -1
  17. data/lib/appsignal.rb +0 -15
  18. data/spec/lib/appsignal/cli/diagnose_spec.rb +14 -11
  19. data/spec/lib/appsignal/config_spec.rb +138 -9
  20. data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +2 -2
  21. data/spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb +21 -47
  22. data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +30 -0
  23. data/spec/lib/appsignal/hooks/activejob_spec.rb +2 -19
  24. data/spec/lib/appsignal/hooks/sequel_spec.rb +1 -1
  25. data/spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb +5 -1
  26. data/spec/lib/appsignal/integrations/sidekiq_spec.rb +14 -5
  27. data/spec/lib/appsignal/transaction_spec.rb +2 -2
  28. data/spec/lib/appsignal/utils/query_params_sanitizer_spec.rb +2 -2
  29. data/spec/lib/appsignal_spec.rb +59 -38
  30. data/spec/support/helpers/activejob_helpers.rb +27 -0
  31. data/spec/support/helpers/dependency_helper.rb +13 -1
  32. data/spec/support/helpers/transaction_helpers.rb +10 -0
  33. metadata +10 -5
  34. data/spec/support/mocks/mock_extension.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7072441c1eceda3fe91c6ab77f83f9ea2850dd60105e040e7c4b965ece8b270c
4
- data.tar.gz: cc3bd58933c8f423bc3040b7725dc8d5d82c5c82ef121d607829cb6cb6ce5eb1
3
+ metadata.gz: d06f2baec0dd5d4ddc29c70448bc5bf2631b229f7a09b3e3348b30222b801c9d
4
+ data.tar.gz: 4bf2cdd9526d816434467686959ca3f2af27413ab3389253dfb7c7a5a0f0218c
5
5
  SHA512:
6
- metadata.gz: a63cfc8f00950f13f3280ab91e58837fd944a7380c6dcbce360a9ca5a52aeab1824f0e6348cb2c83fbbbfbaaf81ee2da6a5091c1779a6c553347f6a43dd0fc8b
7
- data.tar.gz: 5a643b37eabc5c53e7e79e115e2de1b31e88f9c7cf2a2d2a39a0db2496dd6463bbc34d936a0a5b92274c4e3496e23e321b7a8321cd7ce8eef6bae36cadf8849a
6
+ metadata.gz: 24e9204497e65b7131724c37e67a1ffa106992244be8aa17ac0055869ea166a5679ff982dc1e726c95045efab17488d6c9c3b679c44314fa2f9a3accd9420734
7
+ data.tar.gz: fcd17e8dd7d8cfbd68ea2f51e2809553629cac960d3b75ce78ac42c8d5c2773faf665f7eb70886f0ffec39c9b6058cf1693dbc3d2e9112c4a98394c1e12ca15c
@@ -446,6 +446,25 @@ blocks:
446
446
  commands:
447
447
  - "./support/bundler_wrapper exec rake test"
448
448
  - "./support/bundler_wrapper exec rake test:failure"
449
+ - name: Ruby 2.5.8 for rails-6.1
450
+ env_vars:
451
+ - *2
452
+ - *3
453
+ - *4
454
+ - *5
455
+ - name: RUBY_VERSION
456
+ value: 2.5.8
457
+ - name: GEMSET
458
+ value: rails-6.1
459
+ - name: BUNDLE_GEMFILE
460
+ value: gemfiles/rails-6.1.gemfile
461
+ - name: _RUBYGEMS_VERSION
462
+ value: latest
463
+ - name: _BUNDLER_VERSION
464
+ value: latest
465
+ commands:
466
+ - "./support/bundler_wrapper exec rake test"
467
+ - "./support/bundler_wrapper exec rake test:failure"
449
468
  - name: Ruby 2.6.9
450
469
  dependencies:
451
470
  - Validation
@@ -683,6 +702,25 @@ blocks:
683
702
  commands:
684
703
  - "./support/bundler_wrapper exec rake test"
685
704
  - "./support/bundler_wrapper exec rake test:failure"
705
+ - name: Ruby 2.6.9 for rails-6.1
706
+ env_vars:
707
+ - *2
708
+ - *3
709
+ - *4
710
+ - *5
711
+ - name: RUBY_VERSION
712
+ value: 2.6.9
713
+ - name: GEMSET
714
+ value: rails-6.1
715
+ - name: BUNDLE_GEMFILE
716
+ value: gemfiles/rails-6.1.gemfile
717
+ - name: _RUBYGEMS_VERSION
718
+ value: latest
719
+ - name: _BUNDLER_VERSION
720
+ value: latest
721
+ commands:
722
+ - "./support/bundler_wrapper exec rake test"
723
+ - "./support/bundler_wrapper exec rake test:failure"
686
724
  - name: Ruby 2.6.9 for resque-1
687
725
  env_vars:
688
726
  - *2
@@ -1034,6 +1072,25 @@ blocks:
1034
1072
  commands:
1035
1073
  - "./support/bundler_wrapper exec rake test"
1036
1074
  - "./support/bundler_wrapper exec rake test:failure"
1075
+ - name: Ruby 2.7.5 for rails-6.1
1076
+ env_vars:
1077
+ - *2
1078
+ - *3
1079
+ - *4
1080
+ - *5
1081
+ - name: RUBY_VERSION
1082
+ value: 2.7.5
1083
+ - name: GEMSET
1084
+ value: rails-6.1
1085
+ - name: BUNDLE_GEMFILE
1086
+ value: gemfiles/rails-6.1.gemfile
1087
+ - name: _RUBYGEMS_VERSION
1088
+ value: latest
1089
+ - name: _BUNDLER_VERSION
1090
+ value: latest
1091
+ commands:
1092
+ - "./support/bundler_wrapper exec rake test"
1093
+ - "./support/bundler_wrapper exec rake test:failure"
1037
1094
  - name: Ruby 2.7.5 for rails-7.0
1038
1095
  env_vars:
1039
1096
  - *2
@@ -1347,6 +1404,25 @@ blocks:
1347
1404
  commands:
1348
1405
  - "./support/bundler_wrapper exec rake test"
1349
1406
  - "./support/bundler_wrapper exec rake test:failure"
1407
+ - name: Ruby 3.0.3 for rails-6.1
1408
+ env_vars:
1409
+ - *2
1410
+ - *3
1411
+ - *4
1412
+ - *5
1413
+ - name: RUBY_VERSION
1414
+ value: 3.0.3
1415
+ - name: GEMSET
1416
+ value: rails-6.1
1417
+ - name: BUNDLE_GEMFILE
1418
+ value: gemfiles/rails-6.1.gemfile
1419
+ - name: _RUBYGEMS_VERSION
1420
+ value: latest
1421
+ - name: _BUNDLER_VERSION
1422
+ value: latest
1423
+ commands:
1424
+ - "./support/bundler_wrapper exec rake test"
1425
+ - "./support/bundler_wrapper exec rake test:failure"
1350
1426
  - name: Ruby 3.0.3 for rails-7.0
1351
1427
  env_vars:
1352
1428
  - *2
@@ -1603,6 +1679,44 @@ blocks:
1603
1679
  commands:
1604
1680
  - "./support/bundler_wrapper exec rake test"
1605
1681
  - "./support/bundler_wrapper exec rake test:failure"
1682
+ - name: Ruby 3.1.0 for rails-6.1
1683
+ env_vars:
1684
+ - *2
1685
+ - *3
1686
+ - *4
1687
+ - *5
1688
+ - name: RUBY_VERSION
1689
+ value: 3.1.0
1690
+ - name: GEMSET
1691
+ value: rails-6.1
1692
+ - name: BUNDLE_GEMFILE
1693
+ value: gemfiles/rails-6.1.gemfile
1694
+ - name: _RUBYGEMS_VERSION
1695
+ value: latest
1696
+ - name: _BUNDLER_VERSION
1697
+ value: latest
1698
+ commands:
1699
+ - "./support/bundler_wrapper exec rake test"
1700
+ - "./support/bundler_wrapper exec rake test:failure"
1701
+ - name: Ruby 3.1.0 for rails-7.0
1702
+ env_vars:
1703
+ - *2
1704
+ - *3
1705
+ - *4
1706
+ - *5
1707
+ - name: RUBY_VERSION
1708
+ value: 3.1.0
1709
+ - name: GEMSET
1710
+ value: rails-7.0
1711
+ - name: BUNDLE_GEMFILE
1712
+ value: gemfiles/rails-7.0.gemfile
1713
+ - name: _RUBYGEMS_VERSION
1714
+ value: latest
1715
+ - name: _BUNDLER_VERSION
1716
+ value: latest
1717
+ commands:
1718
+ - "./support/bundler_wrapper exec rake test"
1719
+ - "./support/bundler_wrapper exec rake test:failure"
1606
1720
  - name: Ruby 3.1.0 for resque-2
1607
1721
  env_vars:
1608
1722
  - *2
@@ -1769,3 +1883,23 @@ blocks:
1769
1883
  commands:
1770
1884
  - "./support/bundler_wrapper exec rake test"
1771
1885
  - "./support/bundler_wrapper exec rake test:failure"
1886
+ - name: Ruby jruby-9.2.19.0 for rails-6.1
1887
+ env_vars:
1888
+ - *2
1889
+ - *3
1890
+ - *4
1891
+ - *5
1892
+ - name: RUBY_VERSION
1893
+ value: jruby-9.2.19.0
1894
+ - name: GEMSET
1895
+ value: rails-6.1
1896
+ - name: BUNDLE_GEMFILE
1897
+ value: gemfiles/rails-6.1.gemfile
1898
+ - name: _RUBYGEMS_VERSION
1899
+ value: latest
1900
+ - name: _BUNDLER_VERSION
1901
+ value: latest
1902
+ - *6
1903
+ commands:
1904
+ - "./support/bundler_wrapper exec rake test"
1905
+ - "./support/bundler_wrapper exec rake test:failure"
data/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # AppSignal for Ruby gem Changelog
2
2
 
3
+ ## 3.0.21
4
+
5
+ ### Changed
6
+
7
+ - [548dd6f4](https://github.com/appsignal/appsignal-ruby/commit/548dd6f4c61ae3be24995a200dc3e5bea1a5f58c) patch - Add config override source. Track final decisions made by the Ruby gem in the configuration in the `override` config source. This will help us track new config options which are being set by their deprecated predecessors in the diagnose report.
8
+
9
+ ### Removed
10
+
11
+ - [3f503ade](https://github.com/appsignal/appsignal-ruby/commit/3f503ade83f22f4b0d86d76ea00e5f4dd3c56b6f) patch - Remove internal `Appsignal.extensions` system. It was unused.
12
+
13
+ ## 3.0.21.alpha.1
14
+
15
+ ### Changed
16
+
17
+ - [f19d9dcc](https://github.com/appsignal/appsignal-ruby/commit/f19d9dcc1c00103f5dc92951481becf4d4ade39e) patch - The MongoDB query sanitization now shows all the attributes in the query at all levels.
18
+ Only the actual values are filtered with a `?` character. Less MongoDB queries are now marked
19
+ as N+1 queries when they weren't the exact same query. This increases the number of unique events
20
+ AppSignal tracks for MongoDB queries.
21
+
22
+ ## 3.0.20
23
+
24
+ ### Added
25
+
26
+ - [35bd83b8](https://github.com/appsignal/appsignal-ruby/commit/35bd83b84fd30f0188d9f134cfd249360b6e281d) patch - Add `send_session_data` option to configure if session data is automatically included transactions. By default this is turned on. It can be disabled by configuring `send_session_data` to `false`.
27
+
28
+ ### Deprecated
29
+
30
+ - [35bd83b8](https://github.com/appsignal/appsignal-ruby/commit/35bd83b84fd30f0188d9f134cfd249360b6e281d) patch - Deprecate `skip_session_data` option in favor of the newly introduced `send_session_data` option. If it is configured it will print a warning on AppSignal load, but will also retain its functionality until the config option is fully removed in the next major release.
31
+ - [e51a8fb6](https://github.com/appsignal/appsignal-ruby/commit/e51a8fb653fccc5a6b72ac7af9c9417e6827e2e9) patch - Warn about the deprecated `working_dir_path` option from all config sources. It previously only printed a warning when it was configured in the `config/appsignal.yml` file, but now also prints the warning if it's set via the Config class initialize options and environment variables. Please use the `working_directory_path` option instead.
32
+
33
+ ### Fixed
34
+
35
+ - [c9000eee](https://github.com/appsignal/appsignal-ruby/commit/c9000eeefec722cb940b2e14f37d31a7827986d6) patch - Fix reported Ruby version in diagnose report. It would report only the first major release of the series, e.g. 2.6.0 for 2.6.1.
36
+
37
+ ## 3.0.19
38
+
39
+ ### Changed
40
+
41
+ - [2587eae3](https://github.com/appsignal/appsignal-ruby/commit/2587eae30f17e0f0b5e27cb61982301220cc77b1) patch - Store the extension install report as JSON, instead of YAML. Reduces internal complexity.
42
+
43
+ ### Fixed
44
+
45
+ - [243c1ed4](https://github.com/appsignal/appsignal-ruby/commit/243c1ed444f3351ca158200a47836673f851cb31) patch - Improve compatibility with the sequel-rails gem by tracking the performed SQL query in instrumentation events.
46
+
3
47
  ## 3.0.18
4
48
 
5
49
  ### Added
data/appsignal.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
25
25
  gem.extensions = %w[ext/extconf.rb]
26
26
 
27
27
  gem.metadata = {
28
+ "rubygems_mfa_required" => "true",
28
29
  "bug_tracker_uri" => "https://github.com/appsignal/appsignal-ruby/issues",
29
30
  "changelog_uri" =>
30
31
  "https://github.com/appsignal/appsignal-ruby/blob/main/CHANGELOG.md",
data/build_matrix.yml CHANGED
@@ -164,6 +164,7 @@ matrix:
164
164
  - "no_dependencies"
165
165
  - "rails-5.2"
166
166
  - "rails-6.0"
167
+ - "rails-6.1"
167
168
  - "rails-7.0"
168
169
 
169
170
  ruby:
@@ -241,6 +242,13 @@ matrix:
241
242
  - "2.3.8"
242
243
  - "2.4.10"
243
244
  - "3.1.0"
245
+ - gem: "rails-6.1"
246
+ exclude:
247
+ ruby:
248
+ - "2.1.10"
249
+ - "2.2.10"
250
+ - "2.3.8"
251
+ - "2.4.10"
244
252
  - gem: "rails-7.0"
245
253
  exclude:
246
254
  ruby:
@@ -250,7 +258,6 @@ matrix:
250
258
  - "2.4.10"
251
259
  - "2.5.8"
252
260
  - "2.6.9"
253
- - "3.1.0"
254
261
  - "jruby-9.2.19.0"
255
262
  - gem: "resque-1"
256
263
  bundler: "1.17.3"
data/ext/base.rb CHANGED
@@ -2,6 +2,7 @@ require "digest"
2
2
  require "fileutils"
3
3
  require "open-uri"
4
4
  require "zlib"
5
+ require "json"
5
6
  require "yaml"
6
7
  require "rubygems/package"
7
8
  require File.expand_path("../../lib/appsignal/version.rb", __FILE__)
@@ -30,7 +31,7 @@ def report
30
31
  },
31
32
  "language" => {
32
33
  "name" => "ruby",
33
- "version" => "#{rbconfig["ruby_version"]}-p#{rbconfig["PATCHLEVEL"]}"
34
+ "version" => "#{rbconfig["RUBY_PROGRAM_VERSION"]}-p#{rbconfig["PATCHLEVEL"]}"
34
35
  },
35
36
  "download" => {
36
37
  "checksum" => "unverified",
@@ -60,7 +61,7 @@ end
60
61
 
61
62
  def write_report
62
63
  File.open(File.join(EXT_PATH, "install.report"), "w") do |file|
63
- file.write YAML.dump(report)
64
+ file.write JSON.generate(report)
64
65
  end
65
66
  end
66
67
 
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rails", "~> 6.1.0"
4
+ gem "net-smtp", require: false
5
+ gem "sidekiq"
6
+
7
+ gemspec :path => "../"
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rails', '~> 7.0.0'
3
+ gem 'rails', "~> 7.0.1"
4
4
  gem "sidekiq"
5
5
  gem "rake", "> 12.2"
6
6
 
@@ -32,20 +32,6 @@ module Appsignal
32
32
 
33
33
  IO.binread(path, length, offset)
34
34
  end
35
-
36
- def self.parse_yaml(contents)
37
- if YAML.respond_to? :safe_load
38
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.6.0")
39
- # Use keyword params for Ruby 2.6 and up
40
- YAML.safe_load(contents, :permitted_classes => [Time])
41
- else
42
- YAML.safe_load(contents, [Time])
43
- end
44
- else
45
- # Support for Ruby versions without YAML.safe_load
46
- YAML.load(contents) # rubocop:disable Security/YAMLLoad
47
- end
48
- end
49
35
  end
50
36
  end
51
37
  end
@@ -352,8 +352,8 @@ module Appsignal
352
352
  def fetch_installation_report
353
353
  path = File.expand_path("../../../../ext/install.report", __FILE__)
354
354
  raw_report = File.read(path)
355
- Utils.parse_yaml(raw_report)
356
- rescue StandardError, Psych::SyntaxError => e # rubocop:disable Lint/ShadowedException
355
+ JSON.parse(raw_report)
356
+ rescue StandardError, JSON::ParserError => e # rubocop:disable Lint/ShadowedException
357
357
  {
358
358
  "parsing_error" => {
359
359
  "error" => "#{e.class}: #{e}",
@@ -411,7 +411,7 @@ module Appsignal
411
411
  def print_installation_build_report(report)
412
412
  report = report.fetch("build", {})
413
413
  puts " Build details"
414
- puts_format "Install time", report["time"].to_s, :level => 2
414
+ puts_format "Install time", report["time"], :level => 2
415
415
  puts_format "Architecture", report["architecture"], :level => 2
416
416
  puts_format "Target", report["target"], :level => 2
417
417
  puts_format "Musl override", report["musl_override"], :level => 2
@@ -443,7 +443,7 @@ module Appsignal
443
443
  save :os, os
444
444
  puts_value "Operating System", os_label
445
445
 
446
- language_version = "#{rbconfig["ruby_version"]}-p#{rbconfig["PATCHLEVEL"]}"
446
+ language_version = "#{rbconfig["RUBY_PROGRAM_VERSION"]}-p#{rbconfig["PATCHLEVEL"]}"
447
447
  save :language_version, language_version
448
448
  puts_format "Ruby version", language_version
449
449
 
@@ -471,7 +471,8 @@ module Appsignal
471
471
  :system => config.system_config,
472
472
  :initial => config.initial_config,
473
473
  :file => config.file_config,
474
- :env => config.env_config
474
+ :env => config.env_config,
475
+ :override => config.override_config
475
476
  }
476
477
  }
477
478
  print_config_options(config)
@@ -39,7 +39,6 @@ module Appsignal
39
39
  ],
40
40
  :send_environment_metadata => true,
41
41
  :send_params => true,
42
- :skip_session_data => false,
43
42
  :transaction_debug_mode => false
44
43
  }.freeze
45
44
 
@@ -88,6 +87,7 @@ module Appsignal
88
87
  "APPSIGNAL_RUNNING_IN_CONTAINER" => :running_in_container,
89
88
  "APPSIGNAL_SEND_ENVIRONMENT_METADATA" => :send_environment_metadata,
90
89
  "APPSIGNAL_SEND_PARAMS" => :send_params,
90
+ "APPSIGNAL_SEND_SESSION_DATA" => :send_session_data,
91
91
  "APPSIGNAL_SKIP_SESSION_DATA" => :skip_session_data,
92
92
  "APPSIGNAL_TRANSACTION_DEBUG_MODE" => :transaction_debug_mode,
93
93
  "APPSIGNAL_WORKING_DIRECTORY_PATH" => :working_directory_path,
@@ -125,6 +125,7 @@ module Appsignal
125
125
  APPSIGNAL_RUNNING_IN_CONTAINER
126
126
  APPSIGNAL_SEND_ENVIRONMENT_METADATA
127
127
  APPSIGNAL_SEND_PARAMS
128
+ APPSIGNAL_SEND_SESSION_DATA
128
129
  APPSIGNAL_SKIP_SESSION_DATA
129
130
  APPSIGNAL_TRANSACTION_DEBUG_MODE
130
131
  ].freeze
@@ -169,7 +170,7 @@ module Appsignal
169
170
  # @return [Hash]
170
171
 
171
172
  attr_reader :root_path, :env, :config_hash, :system_config,
172
- :initial_config, :file_config, :env_config
173
+ :initial_config, :file_config, :env_config, :override_config
173
174
  attr_accessor :logger
174
175
 
175
176
  # Initialize a new configuration object for AppSignal.
@@ -230,6 +231,11 @@ module Appsignal
230
231
  # Load config from environment variables
231
232
  @env_config = load_from_environment
232
233
  merge(env_config)
234
+ # Load config overrides
235
+ @override_config = determine_overrides
236
+ merge(override_config)
237
+ # Handle deprecated config options
238
+ maintain_backwards_compatibility
233
239
  # Validate that we have a correct config
234
240
  validate
235
241
  # Track origin of env
@@ -374,12 +380,9 @@ module Appsignal
374
380
  configurations = YAML.load(ERB.new(IO.read(config_file)).result, **read_options)
375
381
  config_for_this_env = configurations[env]
376
382
  if config_for_this_env
377
- config_for_this_env =
378
- config_for_this_env.each_with_object({}) do |(key, value), hash|
379
- hash[key.to_sym] = value # convert keys to symbols
380
- end
381
-
382
- maintain_backwards_compatibility(config_for_this_env)
383
+ config_for_this_env.each_with_object({}) do |(key, value), hash|
384
+ hash[key.to_sym] = value # convert keys to symbols
385
+ end
383
386
  else
384
387
  logger.error "Not loading from config file: config for '#{env}' not found"
385
388
  nil
@@ -394,20 +397,25 @@ module Appsignal
394
397
  nil
395
398
  end
396
399
 
397
- # Maintain backwards compatibility with config files generated by earlier
398
- # versions of the gem
400
+ # Maintain backwards compatibility with deprecated config options.
399
401
  #
400
- # Used by {#load_from_disk}. No compatibility for env variables or initial config currently.
401
- def maintain_backwards_compatibility(configuration)
402
- configuration.tap do |config|
403
- if config.include?(:working_dir_path)
404
- deprecation_message \
405
- "'working_dir_path' is deprecated, please use " \
406
- "'working_directory_path' instead and specify the " \
407
- "full path to the working directory",
408
- logger
409
- end
410
- end
402
+ # Add warnings for deprecated config options here if they have no
403
+ # replacement, or should be non-functional.
404
+ #
405
+ # Add them to {determine_overrides} if replacement config options should be
406
+ # set instead.
407
+ #
408
+ # Make sure to remove the contents of this method in the next major
409
+ # version, but the method itself with an empty body can stick around as a
410
+ # structure for future deprecations.
411
+ def maintain_backwards_compatibility
412
+ return unless config_hash.key?(:working_dir_path)
413
+
414
+ deprecation_message \
415
+ "The `working_dir_path` option is deprecated, please use " \
416
+ "`working_directory_path` instead and specify the " \
417
+ "full path to the working directory",
418
+ logger
411
419
  end
412
420
 
413
421
  def load_from_environment
@@ -437,6 +445,31 @@ module Appsignal
437
445
  config
438
446
  end
439
447
 
448
+ # Set config options based on the final user config. Fix any conflicting
449
+ # config or set new config options based on deprecated config options.
450
+ #
451
+ # Make sure to remove behavior for deprecated config options in this method
452
+ # in the next major version, but the method itself with an empty body can
453
+ # stick around as a structure for future deprecations.
454
+ def determine_overrides
455
+ config = {}
456
+ skip_session_data = config_hash[:skip_session_data]
457
+ send_session_data = config_hash[:send_session_data]
458
+ if skip_session_data.nil? # Deprecated option is not set
459
+ if send_session_data.nil? # Not configured by user
460
+ config[:send_session_data] = true # Set default value
461
+ end
462
+ else
463
+ deprecation_message "The `skip_session_data` config option is " \
464
+ "deprecated. Please use `send_session_data` instead.",
465
+ logger
466
+ # Not configured by user
467
+ config[:send_session_data] = !skip_session_data if send_session_data.nil?
468
+ end
469
+
470
+ config
471
+ end
472
+
440
473
  def merge(new_config)
441
474
  new_config.each do |key, value|
442
475
  unless config_hash[key].nil?
@@ -21,28 +21,28 @@ module Appsignal
21
21
  },
22
22
  "insert" => {
23
23
  "insert" => :allow,
24
- "documents" => :deny_array,
24
+ "documents" => :sanitize_document,
25
25
  "ordered" => :allow
26
26
  },
27
27
  "update" => {
28
28
  "update" => :allow,
29
- "updates" => :sanitize_bulk,
29
+ "updates" => :sanitize_document,
30
30
  "ordered" => :allow
31
31
  },
32
32
  "findandmodify" => {
33
33
  "findandmodify" => :allow,
34
34
  "query" => :sanitize_document,
35
- "update" => :deny_array,
35
+ "update" => :sanitize_document,
36
36
  "new" => :allow
37
37
  },
38
38
  "delete" => {
39
39
  "delete" => :allow,
40
- "deletes" => :sanitize_bulk,
40
+ "deletes" => :sanitize_document,
41
41
  "ordered" => :allow
42
42
  },
43
43
  "bulk" => {
44
44
  "q" => :sanitize_document,
45
- "u" => :deny_array,
45
+ "u" => :sanitize_document,
46
46
  "limit" => :allow,
47
47
  "multi" => :allow,
48
48
  "upsert" => :allow
@@ -68,20 +68,9 @@ module Appsignal
68
68
  # Applies strategy on hash values based on keys
69
69
  def self.apply_strategy(strategy, val)
70
70
  case strategy
71
- when :allow then val
72
- when :deny then "?"
73
- when :deny_array then "[?]"
71
+ when :allow then val
74
72
  when :sanitize_document
75
- Appsignal::Utils::QueryParamsSanitizer.sanitize(val, true, :mongodb)
76
- when :sanitize_bulk
77
- if val.length > 1
78
- [
79
- format(:bulk, val.first),
80
- "[...]"
81
- ]
82
- else
83
- val.map { |v| format(:bulk, v) }
84
- end
73
+ Appsignal::Utils::QueryParamsSanitizer.sanitize(val, false, :mongodb)
85
74
  else "?"
86
75
  end
87
76
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appsignal
4
+ class EventFormatter
5
+ # @api private
6
+ module Sequel
7
+ # Compatability with the sequel-rails gem.
8
+ # The sequel-rails gem adds its own ActiveSupport::Notifications events
9
+ # that conflict with our own sequel instrumentor. Without this event
10
+ # formatter the sequel-rails events are recorded without the SQL query
11
+ # that's being executed.
12
+ class SqlFormatter
13
+ def format(payload)
14
+ [payload[:name].to_s, payload[:sql], SQL_BODY_FORMAT]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ Appsignal::EventFormatter.register(
22
+ "sql.sequel",
23
+ Appsignal::EventFormatter::Sequel::SqlFormatter
24
+ )
@@ -106,9 +106,5 @@ module Appsignal
106
106
  def self.jruby?
107
107
  RUBY_PLATFORM == "java"
108
108
  end
109
-
110
- def self.ruby_2_7_or_newer?
111
- RUBY_VERSION > "2.7"
112
- end
113
109
  end
114
110
  end
@@ -476,12 +476,12 @@ module Appsignal
476
476
  #
477
477
  # The session data is sanitized by the {Appsignal::Utils::HashSanitizer}.
478
478
  #
479
- # @return [nil] if `:skip_session_data` config is set to `true`.
479
+ # @return [nil] if `:send_session_data` config is set to `false`.
480
480
  # @return [nil] if the {#request} object doesn't respond to `#session`.
481
481
  # @return [nil] if the {#request} session data is `nil`.
482
482
  # @return [Hash<String, Object>]
483
483
  def sanitized_session_data
484
- return if Appsignal.config[:skip_session_data] ||
484
+ return if !Appsignal.config[:send_session_data] ||
485
485
  !request.respond_to?(:session)
486
486
  session = request.session
487
487
  return unless session
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Appsignal
4
- VERSION = "3.0.18".freeze
4
+ VERSION = "3.0.21".freeze
5
5
  end
data/lib/appsignal.rb CHANGED
@@ -58,20 +58,6 @@ module Appsignal
58
58
  # @see start_logger
59
59
  attr_writer :logger
60
60
 
61
- # @api private
62
- def extensions
63
- @extensions ||= []
64
- end
65
-
66
- # @api private
67
- def initialize_extensions
68
- Appsignal.logger.debug("Initializing extensions")
69
- extensions.each do |extension|
70
- Appsignal.logger.debug("Initializing #{extension}")
71
- extension.initializer
72
- end
73
- end
74
-
75
61
  # @api private
76
62
  def testing?
77
63
  false
@@ -123,7 +109,6 @@ module Appsignal
123
109
  config.write_to_environment
124
110
  Appsignal::Extension.start
125
111
  Appsignal::Hooks.load_hooks
126
- initialize_extensions
127
112
 
128
113
  if config[:enable_allocation_tracking] && !Appsignal::System.jruby?
129
114
  Appsignal::Extension.install_allocation_event_hook