appsignal 3.0.16-java → 3.0.20-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -3
- data/.semaphore/semaphore.yml +512 -103
- data/CHANGELOG.md +37 -0
- data/appsignal.gemspec +0 -2
- data/build_matrix.yml +44 -16
- data/ext/agent.yml +25 -25
- data/ext/base.rb +3 -2
- data/gemfiles/rails-6.1.gemfile +7 -0
- data/gemfiles/rails-7.0.gemfile +7 -0
- data/lib/appsignal/cli/diagnose/utils.rb +0 -14
- data/lib/appsignal/cli/diagnose.rb +4 -4
- data/lib/appsignal/config.rb +65 -20
- data/lib/appsignal/event_formatter/sequel/sql_formatter.rb +24 -0
- data/lib/appsignal/integrations/sidekiq.rb +5 -1
- data/lib/appsignal/system.rb +0 -4
- data/lib/appsignal/transaction.rb +2 -2
- data/lib/appsignal/version.rb +1 -1
- data/lib/appsignal.rb +4 -10
- data/spec/lib/appsignal/cli/diagnose_spec.rb +11 -11
- data/spec/lib/appsignal/config_spec.rb +208 -10
- data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +2 -2
- data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +30 -0
- data/spec/lib/appsignal/event_formatter_spec.rb +2 -2
- data/spec/lib/appsignal/hooks/activejob_spec.rb +17 -6
- data/spec/lib/appsignal/hooks/sequel_spec.rb +1 -1
- data/spec/lib/appsignal/integrations/padrino_spec.rb +8 -2
- data/spec/lib/appsignal/integrations/sidekiq_spec.rb +23 -5
- data/spec/lib/appsignal/transaction_spec.rb +2 -2
- data/spec/lib/appsignal/utils/data_spec.rb +0 -2
- data/spec/lib/appsignal/utils/json_spec.rb +0 -2
- data/spec/lib/appsignal_spec.rb +2 -3
- data/spec/support/helpers/activejob_helpers.rb +27 -0
- data/spec/support/helpers/dependency_helper.rb +13 -1
- metadata +10 -3
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,42 @@
|
|
1
1
|
# AppSignal for Ruby gem Changelog
|
2
2
|
|
3
|
+
## 3.0.20
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- [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`.
|
8
|
+
|
9
|
+
### Deprecated
|
10
|
+
|
11
|
+
- [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.
|
12
|
+
- [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.
|
13
|
+
|
14
|
+
### Fixed
|
15
|
+
|
16
|
+
- [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.
|
17
|
+
|
18
|
+
## 3.0.19
|
19
|
+
|
20
|
+
### Changed
|
21
|
+
|
22
|
+
- [2587eae3](https://github.com/appsignal/appsignal-ruby/commit/2587eae30f17e0f0b5e27cb61982301220cc77b1) patch - Store the extension install report as JSON, instead of YAML. Reduces internal complexity.
|
23
|
+
|
24
|
+
### Fixed
|
25
|
+
|
26
|
+
- [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.
|
27
|
+
|
28
|
+
## 3.0.18
|
29
|
+
|
30
|
+
### Added
|
31
|
+
|
32
|
+
- [d7bfcdf1](https://github.com/appsignal/appsignal-ruby/commit/d7bfcdf11a66df1ec5f54ac9342e5566062013b5) patch - Add Ruby 3.1.0 support. There was an issue with `YAML.load` arguments when parsing the `appsignal.yml` config file.
|
33
|
+
|
34
|
+
## 3.0.17
|
35
|
+
|
36
|
+
### Fixed
|
37
|
+
|
38
|
+
- [f9d57752](https://github.com/appsignal/appsignal-ruby/commit/f9d5775217400c59a70d98e9aa96e3dcd06cb1f9) patch - Use the `log_level` option for the Ruby gem logger. Previously it only configured the extension and agent loggers. Also fixes the `debug` and `transaction_debug_mode` option if no `log_level` is configured by the app.
|
39
|
+
|
3
40
|
## 3.0.16
|
4
41
|
|
5
42
|
### Added
|
data/appsignal.gemspec
CHANGED
data/build_matrix.yml
CHANGED
@@ -52,7 +52,7 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
52
52
|
- name: Validate CI setup
|
53
53
|
env_vars:
|
54
54
|
- name: RUBY_VERSION
|
55
|
-
value: 2.6.
|
55
|
+
value: 2.6.9
|
56
56
|
- name: GEMSET
|
57
57
|
value: no_dependencies
|
58
58
|
- name: BUNDLE_GEMFILE
|
@@ -76,7 +76,7 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
76
76
|
- name: RuboCop
|
77
77
|
env_vars:
|
78
78
|
- name: RUBY_VERSION
|
79
|
-
value: 2.6.
|
79
|
+
value: 2.6.9
|
80
80
|
- name: GEMSET
|
81
81
|
value: no_dependencies
|
82
82
|
- name: BUNDLE_GEMFILE
|
@@ -164,6 +164,8 @@ matrix:
|
|
164
164
|
- "no_dependencies"
|
165
165
|
- "rails-5.2"
|
166
166
|
- "rails-6.0"
|
167
|
+
- "rails-6.1"
|
168
|
+
- "rails-7.0"
|
167
169
|
|
168
170
|
ruby:
|
169
171
|
- ruby: "2.0.0-p648"
|
@@ -184,9 +186,10 @@ matrix:
|
|
184
186
|
gems: "none"
|
185
187
|
- ruby: "2.5.8"
|
186
188
|
gems: "minimal"
|
187
|
-
- ruby: "2.6.
|
188
|
-
- ruby: "2.7.
|
189
|
-
- ruby: "3.0.
|
189
|
+
- ruby: "2.6.9"
|
190
|
+
- ruby: "2.7.5"
|
191
|
+
- ruby: "3.0.3"
|
192
|
+
- ruby: "3.1.0"
|
190
193
|
- ruby: "jruby-9.2.19.0"
|
191
194
|
gems: "minimal"
|
192
195
|
env_vars:
|
@@ -204,28 +207,33 @@ matrix:
|
|
204
207
|
bundler: "1.17.3"
|
205
208
|
exclude:
|
206
209
|
ruby:
|
207
|
-
- "2.6.
|
208
|
-
- "2.7.
|
209
|
-
- "3.0.
|
210
|
+
- "2.6.9"
|
211
|
+
- "2.7.5"
|
212
|
+
- "3.0.3"
|
213
|
+
- "3.1.0"
|
210
214
|
- gem: "rails-4.2"
|
211
215
|
bundler: "1.17.3"
|
212
216
|
exclude:
|
213
217
|
ruby:
|
214
|
-
- "2.6.
|
215
|
-
- "2.7.
|
216
|
-
- "3.0.
|
218
|
+
- "2.6.9"
|
219
|
+
- "2.7.5"
|
220
|
+
- "3.0.3"
|
221
|
+
- "3.1.0"
|
217
222
|
- gem: "rails-5.0"
|
218
223
|
exclude:
|
219
224
|
ruby:
|
220
|
-
- "3.0.
|
225
|
+
- "3.0.3"
|
226
|
+
- "3.1.0"
|
221
227
|
- gem: "rails-5.1"
|
222
228
|
exclude:
|
223
229
|
ruby:
|
224
|
-
- "3.0.
|
230
|
+
- "3.0.3"
|
231
|
+
- "3.1.0"
|
225
232
|
- gem: "rails-5.2"
|
226
233
|
exclude:
|
227
234
|
ruby:
|
228
|
-
- "3.0.
|
235
|
+
- "3.0.3"
|
236
|
+
- "3.1.0"
|
229
237
|
- gem: "rails-6.0"
|
230
238
|
exclude:
|
231
239
|
ruby:
|
@@ -233,16 +241,36 @@ matrix:
|
|
233
241
|
- "2.2.10"
|
234
242
|
- "2.3.8"
|
235
243
|
- "2.4.10"
|
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"
|
252
|
+
- gem: "rails-7.0"
|
253
|
+
exclude:
|
254
|
+
ruby:
|
255
|
+
- "2.1.10"
|
256
|
+
- "2.2.10"
|
257
|
+
- "2.3.8"
|
258
|
+
- "2.4.10"
|
259
|
+
- "2.5.8"
|
260
|
+
- "2.6.9"
|
261
|
+
- "jruby-9.2.19.0"
|
236
262
|
- gem: "resque-1"
|
237
263
|
bundler: "1.17.3"
|
238
264
|
exclude:
|
239
265
|
ruby:
|
240
|
-
- "3.0.
|
266
|
+
- "3.0.3"
|
267
|
+
- "3.1.0"
|
241
268
|
- gem: "resque-2"
|
242
269
|
- gem: "sequel"
|
243
270
|
- gem: "sequel-435"
|
244
271
|
exclude:
|
245
272
|
ruby:
|
246
|
-
- "3.0.
|
273
|
+
- "3.0.3"
|
274
|
+
- "3.1.0"
|
247
275
|
- gem: "sinatra"
|
248
276
|
- gem: "webmachine"
|
data/ext/agent.yml
CHANGED
@@ -3,92 +3,92 @@
|
|
3
3
|
# appsignal-agent repository.
|
4
4
|
# Modifications to this file will be overwritten with the next agent release.
|
5
5
|
---
|
6
|
-
version:
|
6
|
+
version: 15ee07b
|
7
7
|
mirrors:
|
8
8
|
- https://appsignal-agent-releases.global.ssl.fastly.net
|
9
9
|
- https://d135dj0rjqvssy.cloudfront.net
|
10
10
|
triples:
|
11
11
|
x86_64-darwin:
|
12
12
|
static:
|
13
|
-
checksum:
|
13
|
+
checksum: 59bb7f5aea47ccea89b48cc323371fd87609592945ae8692f36063a635970e22
|
14
14
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
15
15
|
dynamic:
|
16
|
-
checksum:
|
16
|
+
checksum: ce2d489170fdd84be1467d24e5c13782cf97912b3c7dbaaebe9e074d56e711a2
|
17
17
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
18
18
|
universal-darwin:
|
19
19
|
static:
|
20
|
-
checksum:
|
20
|
+
checksum: 59bb7f5aea47ccea89b48cc323371fd87609592945ae8692f36063a635970e22
|
21
21
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
22
22
|
dynamic:
|
23
|
-
checksum:
|
23
|
+
checksum: ce2d489170fdd84be1467d24e5c13782cf97912b3c7dbaaebe9e074d56e711a2
|
24
24
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
25
25
|
aarch64-darwin:
|
26
26
|
static:
|
27
|
-
checksum:
|
27
|
+
checksum: aa37596a85d65d46fc5bba25d4d059e98655709e6c44ee39e7c6ba72398ad704
|
28
28
|
filename: appsignal-aarch64-darwin-all-static.tar.gz
|
29
29
|
dynamic:
|
30
|
-
checksum:
|
30
|
+
checksum: b40026410702c1bb3ac974c9648d464e0551956dc933deff22543f10cca81e46
|
31
31
|
filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
|
32
32
|
arm64-darwin:
|
33
33
|
static:
|
34
|
-
checksum:
|
34
|
+
checksum: aa37596a85d65d46fc5bba25d4d059e98655709e6c44ee39e7c6ba72398ad704
|
35
35
|
filename: appsignal-aarch64-darwin-all-static.tar.gz
|
36
36
|
dynamic:
|
37
|
-
checksum:
|
37
|
+
checksum: b40026410702c1bb3ac974c9648d464e0551956dc933deff22543f10cca81e46
|
38
38
|
filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
|
39
39
|
arm-darwin:
|
40
40
|
static:
|
41
|
-
checksum:
|
41
|
+
checksum: aa37596a85d65d46fc5bba25d4d059e98655709e6c44ee39e7c6ba72398ad704
|
42
42
|
filename: appsignal-aarch64-darwin-all-static.tar.gz
|
43
43
|
dynamic:
|
44
|
-
checksum:
|
44
|
+
checksum: b40026410702c1bb3ac974c9648d464e0551956dc933deff22543f10cca81e46
|
45
45
|
filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
|
46
46
|
aarch64-linux:
|
47
47
|
static:
|
48
|
-
checksum:
|
48
|
+
checksum: 12c5659d5a5d67ee641bdb1c38ef842b7687811fdec1f9edf8e196a2ed596405
|
49
49
|
filename: appsignal-aarch64-linux-all-static.tar.gz
|
50
50
|
dynamic:
|
51
|
-
checksum:
|
51
|
+
checksum: 8301ab5f64af1c185860314682fbfd89027ea5e4850d8beb222613ca5455358a
|
52
52
|
filename: appsignal-aarch64-linux-all-dynamic.tar.gz
|
53
53
|
i686-linux:
|
54
54
|
static:
|
55
|
-
checksum:
|
55
|
+
checksum: afebd51e26b8d21923a8adcbc8fda7bbd29d4e12573f53895e3a650fcd84ffd5
|
56
56
|
filename: appsignal-i686-linux-all-static.tar.gz
|
57
57
|
dynamic:
|
58
|
-
checksum:
|
58
|
+
checksum: e0ed425a1d92ad7e9beb83f5b7c896f8606773cc599337a198536a150ba76c51
|
59
59
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
60
60
|
x86-linux:
|
61
61
|
static:
|
62
|
-
checksum:
|
62
|
+
checksum: afebd51e26b8d21923a8adcbc8fda7bbd29d4e12573f53895e3a650fcd84ffd5
|
63
63
|
filename: appsignal-i686-linux-all-static.tar.gz
|
64
64
|
dynamic:
|
65
|
-
checksum:
|
65
|
+
checksum: e0ed425a1d92ad7e9beb83f5b7c896f8606773cc599337a198536a150ba76c51
|
66
66
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
67
67
|
x86_64-linux:
|
68
68
|
static:
|
69
|
-
checksum:
|
69
|
+
checksum: 563eb5c9daeec67a760ac236b2848aee4ec0e39dca1368150a6d99844d4d665f
|
70
70
|
filename: appsignal-x86_64-linux-all-static.tar.gz
|
71
71
|
dynamic:
|
72
|
-
checksum:
|
72
|
+
checksum: 74940f06f4c92582262014a9967f298bccee3ca94e3a490ddc40787573c91ed0
|
73
73
|
filename: appsignal-x86_64-linux-all-dynamic.tar.gz
|
74
74
|
x86_64-linux-musl:
|
75
75
|
static:
|
76
|
-
checksum:
|
76
|
+
checksum: 2ecad2b2bdd362d9d871322eac79370d12314e3d32a53c83be17d054e91f188d
|
77
77
|
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
78
78
|
dynamic:
|
79
|
-
checksum:
|
79
|
+
checksum: 5e4c4096ca7b0c7a97fe03f684c0678396c97f24c2065dc961081d022a8ad2a7
|
80
80
|
filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
|
81
81
|
x86_64-freebsd:
|
82
82
|
static:
|
83
|
-
checksum:
|
83
|
+
checksum: 2eaa4beeb3322ec3c6007f4a8ec483405f8ade4c372031a068bbedf05da9443d
|
84
84
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
85
85
|
dynamic:
|
86
|
-
checksum:
|
86
|
+
checksum: 4805995f0b10d4b5183e4a2430af19638372a4f290d95a123a0874b2f3878d8e
|
87
87
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
88
88
|
amd64-freebsd:
|
89
89
|
static:
|
90
|
-
checksum:
|
90
|
+
checksum: 2eaa4beeb3322ec3c6007f4a8ec483405f8ade4c372031a068bbedf05da9443d
|
91
91
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
92
92
|
dynamic:
|
93
|
-
checksum:
|
93
|
+
checksum: 4805995f0b10d4b5183e4a2430af19638372a4f290d95a123a0874b2f3878d8e
|
94
94
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
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["
|
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
|
64
|
+
file.write JSON.generate(report)
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
@@ -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
|
-
|
356
|
-
rescue StandardError,
|
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"]
|
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["
|
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
|
|
data/lib/appsignal/config.rb
CHANGED
@@ -30,7 +30,6 @@ module Appsignal
|
|
30
30
|
:instrument_redis => true,
|
31
31
|
:instrument_sequel => true,
|
32
32
|
:log => "file",
|
33
|
-
:log_level => "info",
|
34
33
|
:request_headers => %w[
|
35
34
|
HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING
|
36
35
|
HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_CONNECTION
|
@@ -40,10 +39,23 @@ module Appsignal
|
|
40
39
|
],
|
41
40
|
:send_environment_metadata => true,
|
42
41
|
:send_params => true,
|
43
|
-
:skip_session_data => false,
|
44
42
|
:transaction_debug_mode => false
|
45
43
|
}.freeze
|
46
44
|
|
45
|
+
# @api private
|
46
|
+
DEFAULT_LOG_LEVEL = Logger::INFO
|
47
|
+
# Map from the `log_level` config option to Ruby's Logger level value.
|
48
|
+
#
|
49
|
+
# The trace level doesn't exist in the Ruby logger so it's mapped to debug.
|
50
|
+
# @api private
|
51
|
+
LOG_LEVEL_MAP = {
|
52
|
+
"error" => Logger::ERROR,
|
53
|
+
"warn" => Logger::WARN,
|
54
|
+
"info" => Logger::INFO,
|
55
|
+
"debug" => Logger::DEBUG,
|
56
|
+
"trace" => Logger::DEBUG
|
57
|
+
}.freeze
|
58
|
+
|
47
59
|
ENV_TO_KEY_MAPPING = {
|
48
60
|
"APPSIGNAL_ACTIVE" => :active,
|
49
61
|
"APPSIGNAL_APP_NAME" => :name,
|
@@ -75,6 +87,7 @@ module Appsignal
|
|
75
87
|
"APPSIGNAL_RUNNING_IN_CONTAINER" => :running_in_container,
|
76
88
|
"APPSIGNAL_SEND_ENVIRONMENT_METADATA" => :send_environment_metadata,
|
77
89
|
"APPSIGNAL_SEND_PARAMS" => :send_params,
|
90
|
+
"APPSIGNAL_SEND_SESSION_DATA" => :send_session_data,
|
78
91
|
"APPSIGNAL_SKIP_SESSION_DATA" => :skip_session_data,
|
79
92
|
"APPSIGNAL_TRANSACTION_DEBUG_MODE" => :transaction_debug_mode,
|
80
93
|
"APPSIGNAL_WORKING_DIRECTORY_PATH" => :working_directory_path,
|
@@ -112,6 +125,7 @@ module Appsignal
|
|
112
125
|
APPSIGNAL_RUNNING_IN_CONTAINER
|
113
126
|
APPSIGNAL_SEND_ENVIRONMENT_METADATA
|
114
127
|
APPSIGNAL_SEND_PARAMS
|
128
|
+
APPSIGNAL_SEND_SESSION_DATA
|
115
129
|
APPSIGNAL_SKIP_SESSION_DATA
|
116
130
|
APPSIGNAL_TRANSACTION_DEBUG_MODE
|
117
131
|
].freeze
|
@@ -217,6 +231,8 @@ module Appsignal
|
|
217
231
|
# Load config from environment variables
|
218
232
|
@env_config = load_from_environment
|
219
233
|
merge(env_config)
|
234
|
+
# Handle deprecated config options
|
235
|
+
maintain_backwards_compatibility
|
220
236
|
# Validate that we have a correct config
|
221
237
|
validate
|
222
238
|
# Track origin of env
|
@@ -242,6 +258,18 @@ module Appsignal
|
|
242
258
|
config_hash[key] = value
|
243
259
|
end
|
244
260
|
|
261
|
+
def log_level
|
262
|
+
if config_hash[:debug] || config_hash[:transaction_debug_mode]
|
263
|
+
level = Logger::DEBUG
|
264
|
+
end
|
265
|
+
option = config_hash[:log_level]
|
266
|
+
if option
|
267
|
+
log_level_option = LOG_LEVEL_MAP[option]
|
268
|
+
level = log_level_option if log_level_option
|
269
|
+
end
|
270
|
+
level.nil? ? Appsignal::Config::DEFAULT_LOG_LEVEL : level
|
271
|
+
end
|
272
|
+
|
245
273
|
def log_file_path
|
246
274
|
path = config_hash[:log_path] || root_path && File.join(root_path, "log")
|
247
275
|
if path && File.writable?(path)
|
@@ -345,15 +373,13 @@ module Appsignal
|
|
345
373
|
def load_from_disk
|
346
374
|
return if !config_file || !File.exist?(config_file)
|
347
375
|
|
348
|
-
|
376
|
+
read_options = RUBY_VERSION >= "3.1.0" ? { :aliases => true } : {}
|
377
|
+
configurations = YAML.load(ERB.new(IO.read(config_file)).result, **read_options)
|
349
378
|
config_for_this_env = configurations[env]
|
350
379
|
if config_for_this_env
|
351
|
-
config_for_this_env
|
352
|
-
|
353
|
-
|
354
|
-
end
|
355
|
-
|
356
|
-
maintain_backwards_compatibility(config_for_this_env)
|
380
|
+
config_for_this_env.each_with_object({}) do |(key, value), hash|
|
381
|
+
hash[key.to_sym] = value # convert keys to symbols
|
382
|
+
end
|
357
383
|
else
|
358
384
|
logger.error "Not loading from config file: config for '#{env}' not found"
|
359
385
|
nil
|
@@ -368,19 +394,38 @@ module Appsignal
|
|
368
394
|
nil
|
369
395
|
end
|
370
396
|
|
371
|
-
# Maintain backwards compatibility with config
|
372
|
-
#
|
397
|
+
# Maintain backwards compatibility with deprecated config options.
|
398
|
+
#
|
399
|
+
# Add deprecated config options here with the behavior of setting its
|
400
|
+
# replacement, if the replacement option is not configured by the user.
|
373
401
|
#
|
374
|
-
#
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
402
|
+
# Make sure to remove the contents of this method in the next major
|
403
|
+
# version, but the method itself with an empty body can stick around as a
|
404
|
+
# structure for future deprecations.
|
405
|
+
def maintain_backwards_compatibility
|
406
|
+
skip_session_data = config_hash[:skip_session_data]
|
407
|
+
send_session_data = config_hash[:send_session_data]
|
408
|
+
if skip_session_data.nil? # Deprecated option is not set
|
409
|
+
if send_session_data.nil? # Not configured by user
|
410
|
+
@system_config[:send_session_data] = true
|
411
|
+
merge(:send_session_data => true) # Set default value
|
383
412
|
end
|
413
|
+
else
|
414
|
+
if send_session_data.nil? # Not configured by user
|
415
|
+
@system_config[:send_session_data] = !skip_session_data
|
416
|
+
merge(:send_session_data => !skip_session_data)
|
417
|
+
end
|
418
|
+
deprecation_message "The `skip_session_data` config option is " \
|
419
|
+
"deprecated. Please use `send_session_data` instead.",
|
420
|
+
logger
|
421
|
+
end
|
422
|
+
|
423
|
+
if config_hash.key?(:working_dir_path) # rubocop:disable Style/GuardClause
|
424
|
+
deprecation_message \
|
425
|
+
"The `working_dir_path` option is deprecated, please use " \
|
426
|
+
"`working_directory_path` instead and specify the " \
|
427
|
+
"full path to the working directory",
|
428
|
+
logger
|
384
429
|
end
|
385
430
|
end
|
386
431
|
|
@@ -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
|
+
)
|
@@ -158,7 +158,11 @@ module Appsignal
|
|
158
158
|
|
159
159
|
# Based on: https://github.com/mperham/sidekiq/blob/63ee43353bd3b753beb0233f64865e658abeb1c3/lib/sidekiq/api.rb#L403-L412
|
160
160
|
def safe_load(content, default)
|
161
|
-
|
161
|
+
if RUBY_VERSION >= "3.1.0"
|
162
|
+
yield(*YAML.unsafe_load(content))
|
163
|
+
else
|
164
|
+
yield(*YAML.load(content))
|
165
|
+
end
|
162
166
|
rescue => error
|
163
167
|
# Sidekiq issue #1761: in dev mode, it's possible to have jobs enqueued
|
164
168
|
# which haven't been loaded into memory yet so the YAML can't be
|
data/lib/appsignal/system.rb
CHANGED
@@ -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 `:
|
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[:
|
484
|
+
return if !Appsignal.config[:send_session_data] ||
|
485
485
|
!request.respond_to?(:session)
|
486
486
|
session = request.session
|
487
487
|
return unless session
|
data/lib/appsignal/version.rb
CHANGED
data/lib/appsignal.rb
CHANGED
@@ -116,12 +116,7 @@ module Appsignal
|
|
116
116
|
)
|
117
117
|
|
118
118
|
if config.valid?
|
119
|
-
logger.level =
|
120
|
-
if config[:debug]
|
121
|
-
Logger::DEBUG
|
122
|
-
else
|
123
|
-
Logger::INFO
|
124
|
-
end
|
119
|
+
logger.level = config.log_level
|
125
120
|
if config.active?
|
126
121
|
logger.info "Starting AppSignal #{Appsignal::VERSION} "\
|
127
122
|
"(#{$PROGRAM_NAME}, Ruby #{RUBY_VERSION}, #{RUBY_PLATFORM})"
|
@@ -230,12 +225,11 @@ module Appsignal
|
|
230
225
|
end
|
231
226
|
|
232
227
|
logger.level =
|
233
|
-
if config
|
234
|
-
|
228
|
+
if config
|
229
|
+
config.log_level
|
235
230
|
else
|
236
|
-
|
231
|
+
Appsignal::Config::DEFAULT_LOG_LEVEL
|
237
232
|
end
|
238
|
-
|
239
233
|
logger << @in_memory_log.string if @in_memory_log
|
240
234
|
end
|
241
235
|
|