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.
- checksums.yaml +4 -4
- data/.semaphore/semaphore.yml +64 -199
- data/CHANGELOG.md +27 -1
- data/Rakefile +12 -4
- data/appsignal.gemspec +19 -4
- data/build_matrix.yml +16 -24
- data/ext/agent.yml +17 -17
- data/gemfiles/capistrano2.gemfile +0 -1
- data/gemfiles/capistrano3.gemfile +0 -1
- data/gemfiles/grape.gemfile +0 -1
- data/gemfiles/no_dependencies.gemfile +2 -6
- data/gemfiles/rails-3.2.gemfile +2 -0
- data/gemfiles/rails-4.2.gemfile +6 -0
- data/gemfiles/resque-2.gemfile +0 -4
- data/gemfiles/sequel-435.gemfile +0 -1
- data/gemfiles/sequel.gemfile +0 -1
- data/gemfiles/sinatra.gemfile +0 -1
- data/lib/appsignal/config.rb +1 -1
- data/lib/appsignal/extension.rb +50 -0
- data/lib/appsignal/helpers/instrumentation.rb +2 -2
- data/lib/appsignal/hooks.rb +1 -1
- data/lib/appsignal/integrations/padrino.rb +1 -1
- data/lib/appsignal/integrations/railtie.rb +1 -5
- data/lib/appsignal/integrations/sinatra.rb +1 -1
- data/lib/appsignal/transaction.rb +2 -2
- data/lib/appsignal/version.rb +1 -1
- data/mono.yml +16 -0
- data/spec/lib/appsignal/cli/diagnose_spec.rb +1 -0
- data/spec/lib/appsignal/config_spec.rb +2 -0
- data/spec/lib/appsignal/extension_install_failure_spec.rb +0 -7
- data/spec/lib/appsignal/extension_spec.rb +43 -9
- data/spec/lib/appsignal/hooks_spec.rb +4 -1
- data/spec/lib/appsignal/transaction_spec.rb +17 -0
- data/spec/lib/appsignal/utils/data_spec.rb +133 -87
- data/spec/lib/appsignal_spec.rb +2 -2
- data/spec/lib/puma/appsignal_spec.rb +1 -1
- data/spec/spec_helper.rb +22 -0
- data/spec/support/testing.rb +11 -1
- data/support/install_deps +9 -8
- metadata +6 -7
- data/gemfiles/rails-4.0.gemfile +0 -6
- 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
|
-
|
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
|
-
|
46
|
-
|
47
|
-
|
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.
|
116
|
-
- ruby: "3.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.
|
139
|
-
- "3.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.
|
146
|
-
- "3.0.
|
144
|
+
- "2.7.3"
|
145
|
+
- "3.0.1"
|
147
146
|
- gem: "rails-5.0"
|
148
147
|
exclude:
|
149
148
|
ruby:
|
150
|
-
- "
|
151
|
-
- "3.0.0"
|
149
|
+
- "3.0.1"
|
152
150
|
- gem: "rails-5.1"
|
153
151
|
exclude:
|
154
152
|
ruby:
|
155
|
-
- "
|
156
|
-
- "3.0.0"
|
153
|
+
- "3.0.1"
|
157
154
|
- gem: "rails-5.2"
|
158
155
|
exclude:
|
159
156
|
ruby:
|
160
|
-
- "
|
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.
|
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.
|
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:
|
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:
|
9
|
+
checksum: 81edea50b934fe5b42c0081a1de5782bc477c321c1c76127d7fa525917f70a04
|
10
10
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
11
11
|
dynamic:
|
12
|
-
checksum:
|
12
|
+
checksum: 60befd59ac704ee21d5881ca0aef6b38caa50b1d1972425bf8f40b4f9710ec1e
|
13
13
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
14
14
|
universal-darwin:
|
15
15
|
static:
|
16
|
-
checksum:
|
16
|
+
checksum: 81edea50b934fe5b42c0081a1de5782bc477c321c1c76127d7fa525917f70a04
|
17
17
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
18
18
|
dynamic:
|
19
|
-
checksum:
|
19
|
+
checksum: 60befd59ac704ee21d5881ca0aef6b38caa50b1d1972425bf8f40b4f9710ec1e
|
20
20
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
21
21
|
i686-linux:
|
22
22
|
static:
|
23
|
-
checksum:
|
23
|
+
checksum: 60ad6a1f69c8f89b5642f49fbf794409e8ada7d63a9126b2c59832c2a92d5b22
|
24
24
|
filename: appsignal-i686-linux-all-static.tar.gz
|
25
25
|
dynamic:
|
26
|
-
checksum:
|
26
|
+
checksum: aedf259de392ea00fd17bc30924cde70d9a1d82a62c6eeefc881cd5ea5dcce63
|
27
27
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
28
28
|
x86-linux:
|
29
29
|
static:
|
30
|
-
checksum:
|
30
|
+
checksum: 60ad6a1f69c8f89b5642f49fbf794409e8ada7d63a9126b2c59832c2a92d5b22
|
31
31
|
filename: appsignal-i686-linux-all-static.tar.gz
|
32
32
|
dynamic:
|
33
|
-
checksum:
|
33
|
+
checksum: aedf259de392ea00fd17bc30924cde70d9a1d82a62c6eeefc881cd5ea5dcce63
|
34
34
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
35
35
|
x86_64-linux:
|
36
36
|
static:
|
37
|
-
checksum:
|
37
|
+
checksum: 7e3cf760f9bd364a6602f05e5014ce1c8e8ac9a97f7a533769711e0fb21e1f45
|
38
38
|
filename: appsignal-x86_64-linux-all-static.tar.gz
|
39
39
|
dynamic:
|
40
|
-
checksum:
|
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:
|
44
|
+
checksum: 4d4dd00607cbe0fb4d14a15e74990f207eba90134c2d1a079b58f0d50f1ab76b
|
45
45
|
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
46
46
|
dynamic:
|
47
|
-
checksum:
|
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:
|
51
|
+
checksum: 176bc1ff1ad40a585ea10456a8ae3f6502c614d713dcbb957d550fa1ae44e7ca
|
52
52
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
53
53
|
dynamic:
|
54
|
-
checksum:
|
54
|
+
checksum: 88c6f3e03f8f6c25a4705f7d6c4286eaa563069a9fb8fad3c0a19e5b9a09f80b
|
55
55
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
56
56
|
amd64-freebsd:
|
57
57
|
static:
|
58
|
-
checksum:
|
58
|
+
checksum: 176bc1ff1ad40a585ea10456a8ae3f6502c614d713dcbb957d550fa1ae44e7ca
|
59
59
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
60
60
|
dynamic:
|
61
|
-
checksum:
|
61
|
+
checksum: 88c6f3e03f8f6c25a4705f7d6c4286eaa563069a9fb8fad3c0a19e5b9a09f80b
|
62
62
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
data/gemfiles/grape.gemfile
CHANGED
@@ -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.
|
7
|
-
|
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 => '../'
|
data/gemfiles/rails-3.2.gemfile
CHANGED
data/gemfiles/rails-4.2.gemfile
CHANGED
@@ -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 => '../'
|
data/gemfiles/resque-2.gemfile
CHANGED
data/gemfiles/sequel-435.gemfile
CHANGED
data/gemfiles/sequel.gemfile
CHANGED
data/gemfiles/sinatra.gemfile
CHANGED
data/lib/appsignal/config.rb
CHANGED
@@ -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
|
data/lib/appsignal/extension.rb
CHANGED
@@ -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
|