appsignal 3.0.0.rc.1-java → 3.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.semaphore/semaphore.yml +64 -199
  3. data/CHANGELOG.md +27 -1
  4. data/Rakefile +12 -4
  5. data/appsignal.gemspec +19 -4
  6. data/build_matrix.yml +16 -24
  7. data/ext/agent.yml +17 -17
  8. data/gemfiles/capistrano2.gemfile +0 -1
  9. data/gemfiles/capistrano3.gemfile +0 -1
  10. data/gemfiles/grape.gemfile +0 -1
  11. data/gemfiles/no_dependencies.gemfile +2 -6
  12. data/gemfiles/rails-3.2.gemfile +2 -0
  13. data/gemfiles/rails-4.2.gemfile +6 -0
  14. data/gemfiles/resque-2.gemfile +0 -4
  15. data/gemfiles/sequel-435.gemfile +0 -1
  16. data/gemfiles/sequel.gemfile +0 -1
  17. data/gemfiles/sinatra.gemfile +0 -1
  18. data/lib/appsignal/config.rb +1 -1
  19. data/lib/appsignal/extension.rb +50 -0
  20. data/lib/appsignal/helpers/instrumentation.rb +2 -2
  21. data/lib/appsignal/hooks.rb +1 -1
  22. data/lib/appsignal/integrations/padrino.rb +1 -1
  23. data/lib/appsignal/integrations/railtie.rb +1 -5
  24. data/lib/appsignal/integrations/sinatra.rb +1 -1
  25. data/lib/appsignal/transaction.rb +2 -2
  26. data/lib/appsignal/version.rb +1 -1
  27. data/mono.yml +16 -0
  28. data/spec/lib/appsignal/cli/diagnose_spec.rb +1 -0
  29. data/spec/lib/appsignal/config_spec.rb +2 -0
  30. data/spec/lib/appsignal/extension_install_failure_spec.rb +0 -7
  31. data/spec/lib/appsignal/extension_spec.rb +43 -9
  32. data/spec/lib/appsignal/hooks_spec.rb +4 -1
  33. data/spec/lib/appsignal/transaction_spec.rb +17 -0
  34. data/spec/lib/appsignal/utils/data_spec.rb +133 -87
  35. data/spec/lib/appsignal_spec.rb +2 -2
  36. data/spec/lib/puma/appsignal_spec.rb +1 -1
  37. data/spec/spec_helper.rb +22 -0
  38. data/spec/support/testing.rb +11 -1
  39. data/support/install_deps +9 -8
  40. metadata +6 -7
  41. data/gemfiles/rails-4.0.gemfile +0 -6
  42. data/gemfiles/rails-4.1.gemfile +0 -6
data/CHANGELOG.md CHANGED
@@ -1,11 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.0.4
4
+
5
+ - [6338e822](https://github.com/appsignal/appsignal-ruby/commit/6338e8227c674ea7bbe6f55cdfde784fa9f5048f) patch - Drop logger level to debug. Reduce the output on the "info" level and only show
6
+ these messages in debug mode. This should reduce the noise for users running
7
+ AppSignal with the STDOUT logger, such as is the default on Heroku.
8
+
9
+ # 3.0.3
10
+ - Fix deprecation message for set_error namespace argument. PR #712
11
+ - Fix example code for Transaction#set_namespace method. PR #713
12
+ - Fix extension fallbacks on extension installation failure, that caused
13
+ - NoMethodErrors. PR #720
14
+ - Bump agent to v-75e76ad. PR #721
15
+
16
+ # 3.0.2
17
+ - Fix error on Rails boot when `enable_frontend_error_catching` is `true`.
18
+ PR #711
19
+
20
+ # 3.0.1
21
+ - Fix error occurring on APPSIGNAL_DNS_SERVER environment variable option
22
+ parsing. PR #709
23
+
3
24
  # 3.0.0
25
+
26
+ Please read our [upgrade from version 2 to 3 guide][upgrade3] before upgrading.
27
+
28
+ [upgrade3]: https://docs.appsignal.com/ruby/installation/upgrade-from-2-to-3.html
29
+
4
30
  - Drop Ruby 1.9 support. PR #683, #682, #688, #694
5
31
  - Require Ruby 2.0 or newer for gem. PR #701
6
32
  - Use Module.prepend for all gem integrations. Fixes #603 in combination with
7
33
  other gems that provide instrumentation for gems. PR #683
8
- - Remove deprecated integrations, classes, methods and arguments. PR #685
34
+ - Remove deprecated integrations, classes, methods and arguments. PR #685, #686
9
35
  - Deprecate `set_error` and `send_error` error helpers `tags` and `namespace`
10
36
  arguments. PR #702
11
37
  - Add Sidekiq error handler. Report more Sidekiq errors that happen around job
data/Rakefile CHANGED
@@ -377,8 +377,6 @@ begin
377
377
  is_jruby = defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
378
378
  excludes = []
379
379
  excludes << "spec/lib/appsignal/extension/jruby_spec.rb" unless is_jruby
380
- is_ruby19 = RUBY_VERSION < "2.0"
381
- excludes << "spec/lib/appsignal/integrations/object_spec.rb" if is_ruby19
382
380
  exclude_pattern = "--exclude-pattern=#{excludes.join(",")}" if excludes.any?
383
381
 
384
382
  desc "Run the AppSignal gem test suite."
@@ -387,10 +385,20 @@ begin
387
385
  end
388
386
 
389
387
  namespace :test do
390
- desc "Run the Appsignal gem test in an extension failure scenario"
391
- RSpec::Core::RakeTask.new :failure do |t|
388
+ RSpec::Core::RakeTask.new :rspec_failure do |t|
392
389
  t.rspec_opts = "#{exclude_pattern} --tag extension_installation_failure"
393
390
  end
391
+
392
+ desc "Intentionally fail the extension installation"
393
+ task :prepare_failure do
394
+ # ENV var to make sure installation fails on purpurse
395
+ ENV["_TEST_APPSIGNAL_EXTENSION_FAILURE"] = "true"
396
+ # Run extension installation with intentional failure
397
+ `rake extension:install`
398
+ end
399
+
400
+ desc "Run the Appsignal gem test in an extension failure scenario"
401
+ task :failure => [:prepare_failure, :rspec_failure]
394
402
  end
395
403
  rescue LoadError # rubocop:disable Lint/HandleExceptions
396
404
  # When running rake install, there is no RSpec yet.
data/appsignal.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
15
15
  gem.homepage = "https://github.com/appsignal/appsignal-ruby"
16
16
  gem.license = "MIT"
17
17
 
18
- gem.files = `git ls-files`.split($\) # rubocop:disable Style/SpecialGlobalVars
18
+ gem.files = `git ls-files`.split($\).reject { |f| f.start_with?(".changesets/") } # rubocop:disable Style/SpecialGlobalVars
19
19
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
20
20
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
21
  gem.name = "appsignal"
@@ -42,9 +42,24 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
42
42
  gem.add_development_dependency "timecop"
43
43
  gem.add_development_dependency "webmock"
44
44
  gem.add_development_dependency "yard", ">= 0.9.20"
45
- is_modern_ruby = Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.0.0")
46
- if is_modern_ruby
47
- gem.add_development_dependency "pry"
45
+ gem.add_development_dependency "pry"
46
+
47
+ # Dependencies that need to be locked to a specific version in developement
48
+ ruby_version = Gem::Version.new(RUBY_VERSION)
49
+ if ruby_version > Gem::Version.new("2.5.0")
50
+ # RuboCop dependency parallel depends on Ruby > 2.4
48
51
  gem.add_development_dependency "rubocop", "0.50.0"
49
52
  end
53
+ if ruby_version < Gem::Version.new("2.1.0")
54
+ # Newer versions of rexml use keyword arguments with optional arguments which
55
+ # work in Ruby 2.1 and newer.
56
+ gem.add_development_dependency "rexml", "3.2.4"
57
+ end
58
+ if ruby_version < Gem::Version.new("2.1.0")
59
+ # public_suffix 3.0 and newer don't support Ruby < 2.1
60
+ gem.add_development_dependency "public_suffix", "~> 2.0.5"
61
+ elsif ruby_version < Gem::Version.new("2.3.0")
62
+ # public_suffix 4.0 and newer don't support Ruby < 2.3
63
+ gem.add_development_dependency "public_suffix", "~> 3.1.1"
64
+ end
50
65
  end
data/build_matrix.yml CHANGED
@@ -88,6 +88,10 @@ matrix:
88
88
  gemsets: # By default all gems are tested
89
89
  none:
90
90
  - "no_dependencies"
91
+ old_rails:
92
+ - "no_dependencies"
93
+ - "rails-3.2"
94
+ - "rails-4.2"
91
95
  minimal:
92
96
  - "no_dependencies"
93
97
  - "rails-5.2"
@@ -97,6 +101,7 @@ matrix:
97
101
  - ruby: "2.0.0-p648"
98
102
  rubygems: "2.7.8"
99
103
  bundler: "1.17.3"
104
+ gems: "old_rails"
100
105
  - ruby: "2.1.10"
101
106
  rubygems: "2.7.8"
102
107
  bundler: "1.17.3"
@@ -112,8 +117,8 @@ matrix:
112
117
  - ruby: "2.5.8"
113
118
  gems: "minimal"
114
119
  - ruby: "2.6.6"
115
- - ruby: "2.7.2"
116
- - ruby: "3.0.0"
120
+ - ruby: "2.7.3"
121
+ - ruby: "3.0.1"
117
122
  - ruby: "jruby-9.1.17.0"
118
123
  gems: "minimal"
119
124
  gems:
@@ -122,47 +127,37 @@ matrix:
122
127
  - gem: "capistrano3"
123
128
  - gem: "grape"
124
129
  - gem: "padrino"
125
- exclude:
126
- ruby:
127
- - "2.0.0-p648"
128
130
  - gem: "que"
129
131
  - gem: "que_beta"
130
- exclude:
131
- ruby:
132
- - "2.0.0-p648"
133
132
  - gem: "rails-3.2"
134
133
  bundler: "1.17.3"
135
134
  exclude:
136
135
  ruby:
137
136
  - "2.6.6"
138
- - "2.7.2"
139
- - "3.0.0"
137
+ - "2.7.3"
138
+ - "3.0.1"
140
139
  - gem: "rails-4.2"
141
140
  bundler: "1.17.3"
142
141
  exclude:
143
142
  ruby:
144
143
  - "2.6.6"
145
- - "2.7.2"
146
- - "3.0.0"
144
+ - "2.7.3"
145
+ - "3.0.1"
147
146
  - gem: "rails-5.0"
148
147
  exclude:
149
148
  ruby:
150
- - "2.0.0-p648"
151
- - "3.0.0"
149
+ - "3.0.1"
152
150
  - gem: "rails-5.1"
153
151
  exclude:
154
152
  ruby:
155
- - "2.0.0-p648"
156
- - "3.0.0"
153
+ - "3.0.1"
157
154
  - gem: "rails-5.2"
158
155
  exclude:
159
156
  ruby:
160
- - "2.0.0-p648"
161
- - "3.0.0"
157
+ - "3.0.1"
162
158
  - gem: "rails-6.0"
163
159
  exclude:
164
160
  ruby:
165
- - "2.0.0-p648"
166
161
  - "2.1.10"
167
162
  - "2.2.10"
168
163
  - "2.3.8"
@@ -172,15 +167,12 @@ matrix:
172
167
  bundler: "1.17.3"
173
168
  exclude:
174
169
  ruby:
175
- - "3.0.0"
170
+ - "3.0.1"
176
171
  - gem: "resque-2"
177
- exclude:
178
- ruby:
179
- - "2.0.0-p648"
180
172
  - gem: "sequel"
181
173
  - gem: "sequel-435"
182
174
  exclude:
183
175
  ruby:
184
- - "3.0.0"
176
+ - "3.0.1"
185
177
  - gem: "sinatra"
186
178
  - gem: "webmachine"
data/ext/agent.yml CHANGED
@@ -1,62 +1,62 @@
1
1
  ---
2
- version: d98461b
2
+ version: 75e76ad
3
3
  mirrors:
4
4
  - https://appsignal-agent-releases.global.ssl.fastly.net
5
5
  - https://d135dj0rjqvssy.cloudfront.net
6
6
  triples:
7
7
  x86_64-darwin:
8
8
  static:
9
- checksum: 178ab2329c7b29cf45140e4707e75c20379fa0c7dfd7f39266a7a95aea510780
9
+ checksum: 81edea50b934fe5b42c0081a1de5782bc477c321c1c76127d7fa525917f70a04
10
10
  filename: appsignal-x86_64-darwin-all-static.tar.gz
11
11
  dynamic:
12
- checksum: '0923985cc78c5cf278f45d530679954b94b1a91c87453369116fc05525e29864'
12
+ checksum: 60befd59ac704ee21d5881ca0aef6b38caa50b1d1972425bf8f40b4f9710ec1e
13
13
  filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
14
14
  universal-darwin:
15
15
  static:
16
- checksum: 178ab2329c7b29cf45140e4707e75c20379fa0c7dfd7f39266a7a95aea510780
16
+ checksum: 81edea50b934fe5b42c0081a1de5782bc477c321c1c76127d7fa525917f70a04
17
17
  filename: appsignal-x86_64-darwin-all-static.tar.gz
18
18
  dynamic:
19
- checksum: '0923985cc78c5cf278f45d530679954b94b1a91c87453369116fc05525e29864'
19
+ checksum: 60befd59ac704ee21d5881ca0aef6b38caa50b1d1972425bf8f40b4f9710ec1e
20
20
  filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
21
21
  i686-linux:
22
22
  static:
23
- checksum: cb772a8a178edb25d666b650efda80149c98e80e4264435d6176f8a6104f959a
23
+ checksum: 60ad6a1f69c8f89b5642f49fbf794409e8ada7d63a9126b2c59832c2a92d5b22
24
24
  filename: appsignal-i686-linux-all-static.tar.gz
25
25
  dynamic:
26
- checksum: c9ac51f4d1b3cc13773d8fa8ea5cfad6af7909144d85186cef9324ec0531bdac
26
+ checksum: aedf259de392ea00fd17bc30924cde70d9a1d82a62c6eeefc881cd5ea5dcce63
27
27
  filename: appsignal-i686-linux-all-dynamic.tar.gz
28
28
  x86-linux:
29
29
  static:
30
- checksum: cb772a8a178edb25d666b650efda80149c98e80e4264435d6176f8a6104f959a
30
+ checksum: 60ad6a1f69c8f89b5642f49fbf794409e8ada7d63a9126b2c59832c2a92d5b22
31
31
  filename: appsignal-i686-linux-all-static.tar.gz
32
32
  dynamic:
33
- checksum: c9ac51f4d1b3cc13773d8fa8ea5cfad6af7909144d85186cef9324ec0531bdac
33
+ checksum: aedf259de392ea00fd17bc30924cde70d9a1d82a62c6eeefc881cd5ea5dcce63
34
34
  filename: appsignal-i686-linux-all-dynamic.tar.gz
35
35
  x86_64-linux:
36
36
  static:
37
- checksum: d6c280e992d74f97d59da9827ec5707ca4f6776b0568cde1c083c1113e4b7104
37
+ checksum: 7e3cf760f9bd364a6602f05e5014ce1c8e8ac9a97f7a533769711e0fb21e1f45
38
38
  filename: appsignal-x86_64-linux-all-static.tar.gz
39
39
  dynamic:
40
- checksum: ef1a3f5d4b2ed61ea2ae4d5cb1a261a0e685fb9d3e7ea9efe455498aad386e59
40
+ checksum: 4a9a4ea22abc93c3afa7d5bfd6f442cd69bf4d672e8db2df1aa2157cfb3fcc4b
41
41
  filename: appsignal-x86_64-linux-all-dynamic.tar.gz
42
42
  x86_64-linux-musl:
43
43
  static:
44
- checksum: 9cf8ad34392662746a45cfce18113ad19cc29954789e2058f30e527163f2e98a
44
+ checksum: 4d4dd00607cbe0fb4d14a15e74990f207eba90134c2d1a079b58f0d50f1ab76b
45
45
  filename: appsignal-x86_64-linux-musl-all-static.tar.gz
46
46
  dynamic:
47
- checksum: 01bd76983227648d9bc41d035e1552fcf18d62f0d6818bf7bb7fc2e7c166513d
47
+ checksum: 067a6d821e220c9c88ceb8f936390ce458fa94f41c13d32603d773485a8cdfd2
48
48
  filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
49
49
  x86_64-freebsd:
50
50
  static:
51
- checksum: 403a597cbdbdba08460c5c9e93347ed9ad1d24333204e6d72db342deb266a296
51
+ checksum: 176bc1ff1ad40a585ea10456a8ae3f6502c614d713dcbb957d550fa1ae44e7ca
52
52
  filename: appsignal-x86_64-freebsd-all-static.tar.gz
53
53
  dynamic:
54
- checksum: a1faae80ae09a6588c4cd35cb91dfa4b2176fc3cb17fbf79db80194c21e75bf9
54
+ checksum: 88c6f3e03f8f6c25a4705f7d6c4286eaa563069a9fb8fad3c0a19e5b9a09f80b
55
55
  filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
56
56
  amd64-freebsd:
57
57
  static:
58
- checksum: 403a597cbdbdba08460c5c9e93347ed9ad1d24333204e6d72db342deb266a296
58
+ checksum: 176bc1ff1ad40a585ea10456a8ae3f6502c614d713dcbb957d550fa1ae44e7ca
59
59
  filename: appsignal-x86_64-freebsd-all-static.tar.gz
60
60
  dynamic:
61
- checksum: a1faae80ae09a6588c4cd35cb91dfa4b2176fc3cb17fbf79db80194c21e75bf9
61
+ checksum: 88c6f3e03f8f6c25a4705f7d6c4286eaa563069a9fb8fad3c0a19e5b9a09f80b
62
62
  filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
@@ -2,6 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'capistrano', '< 3.0'
4
4
  gem 'net-ssh', '2.9.2'
5
- gem 'rack', '~> 1.6'
6
5
 
7
6
  gemspec :path => '../'
@@ -3,6 +3,5 @@ source 'https://rubygems.org'
3
3
  gem 'capistrano', '~> 3.0'
4
4
  gem 'i18n', '~> 1.2.0'
5
5
  gem 'net-ssh', '2.9.2'
6
- gem 'rack', '~> 1.6'
7
6
 
8
7
  gemspec :path => '../'
@@ -1,7 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'grape', '0.14.0'
4
- gem 'rack', '~> 1.6'
5
4
  gem 'activesupport', '~> 4.2'
6
5
 
7
6
  gemspec :path => '../'
@@ -1,12 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rack', '~> 1.6'
4
-
5
3
  ruby_version = Gem::Version.new(RUBY_VERSION)
6
- if ruby_version < Gem::Version.new("2.0.0")
7
- # Newer versions of this gem have rexml as a dependency which doesn't work on
8
- # Ruby 1.9
9
- gem "crack", "0.4.4"
4
+ if ruby_version < Gem::Version.new("2.3.0")
5
+ gem 'rack', '~> 1.6'
10
6
  end
11
7
 
12
8
  gemspec :path => '../'
@@ -3,4 +3,6 @@ source 'https://rubygems.org'
3
3
  gem 'rails', '~> 3.2.14'
4
4
  gem 'test-unit'
5
5
 
6
+ gem "rack-cache", "~> 1.9.0"
7
+
6
8
  gemspec :path => '../'
@@ -13,5 +13,11 @@ end
13
13
  if ruby_version < Gem::Version.new("2.1.0")
14
14
  gem 'nokogiri', '~> 1.6.0'
15
15
  end
16
+ if ruby_version < Gem::Version.new("2.5.0")
17
+ gem 'sprockets', '~> 3.7.2'
18
+ end
19
+
20
+ gem "minitest", "5.12.0"
21
+ gem "connection_pool", "2.2.3"
16
22
 
17
23
  gemspec :path => '../'
@@ -4,7 +4,3 @@ gem 'resque', "~> 2.0"
4
4
  gem 'sinatra'
5
5
 
6
6
  gemspec :path => '../'
7
-
8
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.1.0")
9
- gem 'nokogiri', '~> 1.6.0'
10
- end
@@ -6,6 +6,5 @@ if RUBY_PLATFORM == "java"
6
6
  else
7
7
  gem 'sqlite3'
8
8
  end
9
- gem 'rack', '~> 1.6'
10
9
 
11
10
  gemspec :path => '../'
@@ -6,6 +6,5 @@ if RUBY_PLATFORM == "java"
6
6
  else
7
7
  gem 'sqlite3'
8
8
  end
9
- gem 'rack', '~> 1.6'
10
9
 
11
10
  gemspec :path => '../'
@@ -1,6 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'sinatra'
4
- gem 'rack', '~> 1.6'
5
4
 
6
5
  gemspec :path => '../'
@@ -81,7 +81,6 @@ module Appsignal
81
81
  ENV_STRING_KEYS = %w[
82
82
  APPSIGNAL_APP_NAME
83
83
  APPSIGNAL_CA_FILE_PATH
84
- APPSIGNAL_DNS_SERVERS
85
84
  APPSIGNAL_HOSTNAME
86
85
  APPSIGNAL_HTTP_PROXY
87
86
  APPSIGNAL_LOG
@@ -112,6 +111,7 @@ module Appsignal
112
111
  ].freeze
113
112
  # @api private
114
113
  ENV_ARRAY_KEYS = %w[
114
+ APPSIGNAL_DNS_SERVERS
115
115
  APPSIGNAL_FILTER_PARAMETERS
116
116
  APPSIGNAL_FILTER_SESSION_DATA
117
117
  APPSIGNAL_IGNORE_ACTIONS
@@ -40,6 +40,16 @@ module Appsignal
40
40
  def method_missing(m, *args, &block)
41
41
  super if Appsignal.testing?
42
42
  end
43
+
44
+ unless Appsignal.extension_loaded?
45
+ def data_map_new
46
+ Appsignal::Extension::MockData.new
47
+ end
48
+
49
+ def data_array_new
50
+ Appsignal::Extension::MockData.new
51
+ end
52
+ end
43
53
  end
44
54
 
45
55
  if Appsignal::System.jruby?
@@ -62,5 +72,45 @@ module Appsignal
62
72
  "#<#{self.class.name}:#{object_id} #{self}>"
63
73
  end
64
74
  end
75
+
76
+ # Mock of the {Data} class. This mock is used when the extension cannot be
77
+ # loaded. This mock listens to all method calls and does nothing, and
78
+ # prevents NoMethodErrors from being raised.
79
+ #
80
+ # Disabled in testing so we can make sure that we don't miss an extension
81
+ # function implementation.
82
+ #
83
+ # This class inherits from the {Data} class so that it passes type checks.
84
+ class MockData < Data
85
+ def initialize(*_args)
86
+ # JRuby extension requirement, as it sends a pointer to the Data object
87
+ # when creating it
88
+ end
89
+
90
+ def method_missing(_method, *_args, &_block)
91
+ super if Appsignal.testing?
92
+ end
93
+
94
+ def to_s
95
+ "{}"
96
+ end
97
+ end
98
+
99
+ # Mock of the {Transaction} class. This mock is used when the extension
100
+ # cannot be loaded. This mock listens to all method calls and does nothing,
101
+ # and prevents NoMethodErrors from being raised.
102
+ #
103
+ # Disabled in testing so we can make sure that we don't miss an extension
104
+ # function implementation.
105
+ class MockTransaction
106
+ def initialize(*_args)
107
+ # JRuby extension requirement, as it sends a pointer to the Transaction
108
+ # object when creating it
109
+ end
110
+
111
+ def method_missing(_method, *_args, &_block)
112
+ super if Appsignal.testing?
113
+ end
114
+ end
65
115
  end
66
116
  end