appsignal 3.4.10 → 3.4.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26ab51e8fb76be38bb80d186a207ef7e07e7aa69deef02f9869448c619e8e2c9
4
- data.tar.gz: 46a9a942feb0328235e1759dd7374b2547ab74e1010d7dfcf64bcef7b7b92129
3
+ metadata.gz: 23564a15fbad1ecb68987675c925a81b0e423ffa66a3481563999f97db10ef79
4
+ data.tar.gz: a42321ba0bc9809e2b4b26a3c7e3707e5c06941a30ed6187cba491cbc76b9cfd
5
5
  SHA512:
6
- metadata.gz: e3d32a2805ba7699c3ffa526b1c72b83a7e2d1a277f4731fa6bd0a85f65060f5d6881a929220bd0f583043272f71fa329dd72589361f78d0ffdda42aa9fa442e
7
- data.tar.gz: 891bf54d301960000525d6a33b27d94f8a074c0a4c57898bcfba84f251cff2ba28e41d2da560ab0ae8f7a39506f49279c3969e835a10469be716a113b091a229
6
+ metadata.gz: ff4db633c340cf16fc0cfb3b154f4b754ef3416d3e56077203b7a298851457624dba934576c634b56bad599199fe427d1200dfa019f3bcfab67a9aa7349a0591
7
+ data.tar.gz: 811176ae1f6735a901e1b0b822b4956aa5a0ca86efd2fbc8cc969afde01510022d3d2adf4fe11de50609f324df4dab0c699dbf84ca120ab27556d18735e7748b
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 3.0
4
+ TargetRubyVersion: 2.7
5
5
  NewCops: enable
6
6
  Include:
7
7
  - "**/*.rb"
@@ -138,7 +138,7 @@ blocks:
138
138
  .bundle
139
139
  - cache store $_GEMS_CACHE-gems-$RUBY_VERSION-diagnose-$(checksum Gemfile)
140
140
  $HOME/.gem
141
- - name: Ruby 3.0.5
141
+ - name: Ruby 2.7.8
142
142
  dependencies:
143
143
  - Validation
144
144
  task:
@@ -165,7 +165,7 @@ blocks:
165
165
  file found'"
166
166
  - "[ -f ext/mkmf.log ] && cat ext/mkmf.log || echo 'No ext/mkmf.log file found'"
167
167
  jobs:
168
- - name: Ruby 3.0.5 for no_dependencies
168
+ - name: Ruby 2.7.8 for no_dependencies
169
169
  env_vars:
170
170
  - &2
171
171
  name: BUNDLE_PATH
@@ -179,6 +179,345 @@ blocks:
179
179
  - &5
180
180
  name: COV
181
181
  value: '1'
182
+ - name: RUBY_VERSION
183
+ value: 2.7.8
184
+ - name: GEMSET
185
+ value: no_dependencies
186
+ - name: BUNDLE_GEMFILE
187
+ value: gemfiles/no_dependencies.gemfile
188
+ - name: _RUBYGEMS_VERSION
189
+ value: latest
190
+ - name: _BUNDLER_VERSION
191
+ value: latest
192
+ commands:
193
+ - "./support/bundler_wrapper exec rake test"
194
+ - "./support/bundler_wrapper exec rake test:failure"
195
+ - name: Ruby 2.7.8 - Gems
196
+ dependencies:
197
+ - Ruby 2.7.8
198
+ task:
199
+ prologue:
200
+ commands:
201
+ - cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum
202
+ appsignal.gemspec)
203
+ - cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE)-$(checksum
204
+ appsignal.gemspec)
205
+ - "./support/install_deps"
206
+ - bundle config set clean 'true'
207
+ - "./support/bundler_wrapper install --jobs=3 --retry=3"
208
+ - "./support/bundler_wrapper exec rake extension:install"
209
+ epilogue: *1
210
+ jobs:
211
+ - name: Ruby 2.7.8 for capistrano2
212
+ env_vars:
213
+ - *2
214
+ - *3
215
+ - *4
216
+ - *5
217
+ - name: RUBY_VERSION
218
+ value: 2.7.8
219
+ - name: GEMSET
220
+ value: capistrano2
221
+ - name: BUNDLE_GEMFILE
222
+ value: gemfiles/capistrano2.gemfile
223
+ - name: _RUBYGEMS_VERSION
224
+ value: latest
225
+ - name: _BUNDLER_VERSION
226
+ value: latest
227
+ commands:
228
+ - "./support/bundler_wrapper exec rake test"
229
+ - name: Ruby 2.7.8 for capistrano3
230
+ env_vars:
231
+ - *2
232
+ - *3
233
+ - *4
234
+ - *5
235
+ - name: RUBY_VERSION
236
+ value: 2.7.8
237
+ - name: GEMSET
238
+ value: capistrano3
239
+ - name: BUNDLE_GEMFILE
240
+ value: gemfiles/capistrano3.gemfile
241
+ - name: _RUBYGEMS_VERSION
242
+ value: latest
243
+ - name: _BUNDLER_VERSION
244
+ value: latest
245
+ commands:
246
+ - "./support/bundler_wrapper exec rake test"
247
+ - name: Ruby 2.7.8 for grape
248
+ env_vars:
249
+ - *2
250
+ - *3
251
+ - *4
252
+ - *5
253
+ - name: RUBY_VERSION
254
+ value: 2.7.8
255
+ - name: GEMSET
256
+ value: grape
257
+ - name: BUNDLE_GEMFILE
258
+ value: gemfiles/grape.gemfile
259
+ - name: _RUBYGEMS_VERSION
260
+ value: latest
261
+ - name: _BUNDLER_VERSION
262
+ value: latest
263
+ commands:
264
+ - "./support/bundler_wrapper exec rake test"
265
+ - name: Ruby 2.7.8 for http5
266
+ env_vars:
267
+ - *2
268
+ - *3
269
+ - *4
270
+ - *5
271
+ - name: RUBY_VERSION
272
+ value: 2.7.8
273
+ - name: GEMSET
274
+ value: http5
275
+ - name: BUNDLE_GEMFILE
276
+ value: gemfiles/http5.gemfile
277
+ - name: _RUBYGEMS_VERSION
278
+ value: latest
279
+ - name: _BUNDLER_VERSION
280
+ value: latest
281
+ commands:
282
+ - "./support/bundler_wrapper exec rake test"
283
+ - name: Ruby 2.7.8 for padrino
284
+ env_vars:
285
+ - *2
286
+ - *3
287
+ - *4
288
+ - *5
289
+ - name: RUBY_VERSION
290
+ value: 2.7.8
291
+ - name: GEMSET
292
+ value: padrino
293
+ - name: BUNDLE_GEMFILE
294
+ value: gemfiles/padrino.gemfile
295
+ - name: _RUBYGEMS_VERSION
296
+ value: latest
297
+ - name: _BUNDLER_VERSION
298
+ value: latest
299
+ commands:
300
+ - "./support/bundler_wrapper exec rake test"
301
+ - name: Ruby 2.7.8 for psych-3
302
+ env_vars:
303
+ - *2
304
+ - *3
305
+ - *4
306
+ - *5
307
+ - name: RUBY_VERSION
308
+ value: 2.7.8
309
+ - name: GEMSET
310
+ value: psych-3
311
+ - name: BUNDLE_GEMFILE
312
+ value: gemfiles/psych-3.gemfile
313
+ - name: _RUBYGEMS_VERSION
314
+ value: latest
315
+ - name: _BUNDLER_VERSION
316
+ value: latest
317
+ commands:
318
+ - "./support/bundler_wrapper exec rake test"
319
+ - name: Ruby 2.7.8 for psych-4
320
+ env_vars:
321
+ - *2
322
+ - *3
323
+ - *4
324
+ - *5
325
+ - name: RUBY_VERSION
326
+ value: 2.7.8
327
+ - name: GEMSET
328
+ value: psych-4
329
+ - name: BUNDLE_GEMFILE
330
+ value: gemfiles/psych-4.gemfile
331
+ - name: _RUBYGEMS_VERSION
332
+ value: latest
333
+ - name: _BUNDLER_VERSION
334
+ value: latest
335
+ commands:
336
+ - "./support/bundler_wrapper exec rake test"
337
+ - name: Ruby 2.7.8 for que
338
+ env_vars:
339
+ - *2
340
+ - *3
341
+ - *4
342
+ - *5
343
+ - name: RUBY_VERSION
344
+ value: 2.7.8
345
+ - name: GEMSET
346
+ value: que
347
+ - name: BUNDLE_GEMFILE
348
+ value: gemfiles/que.gemfile
349
+ - name: _RUBYGEMS_VERSION
350
+ value: latest
351
+ - name: _BUNDLER_VERSION
352
+ value: latest
353
+ commands:
354
+ - "./support/bundler_wrapper exec rake test"
355
+ - name: Ruby 2.7.8 for que_beta
356
+ env_vars:
357
+ - *2
358
+ - *3
359
+ - *4
360
+ - *5
361
+ - name: RUBY_VERSION
362
+ value: 2.7.8
363
+ - name: GEMSET
364
+ value: que_beta
365
+ - name: BUNDLE_GEMFILE
366
+ value: gemfiles/que_beta.gemfile
367
+ - name: _RUBYGEMS_VERSION
368
+ value: latest
369
+ - name: _BUNDLER_VERSION
370
+ value: latest
371
+ commands:
372
+ - "./support/bundler_wrapper exec rake test"
373
+ - name: Ruby 2.7.8 for rails-6.0
374
+ env_vars:
375
+ - *2
376
+ - *3
377
+ - *4
378
+ - *5
379
+ - name: RUBY_VERSION
380
+ value: 2.7.8
381
+ - name: GEMSET
382
+ value: rails-6.0
383
+ - name: BUNDLE_GEMFILE
384
+ value: gemfiles/rails-6.0.gemfile
385
+ - name: _RUBYGEMS_VERSION
386
+ value: latest
387
+ - name: _BUNDLER_VERSION
388
+ value: latest
389
+ commands:
390
+ - "./support/bundler_wrapper exec rake test"
391
+ - name: Ruby 2.7.8 for rails-6.1
392
+ env_vars:
393
+ - *2
394
+ - *3
395
+ - *4
396
+ - *5
397
+ - name: RUBY_VERSION
398
+ value: 2.7.8
399
+ - name: GEMSET
400
+ value: rails-6.1
401
+ - name: BUNDLE_GEMFILE
402
+ value: gemfiles/rails-6.1.gemfile
403
+ - name: _RUBYGEMS_VERSION
404
+ value: latest
405
+ - name: _BUNDLER_VERSION
406
+ value: latest
407
+ commands:
408
+ - "./support/bundler_wrapper exec rake test"
409
+ - name: Ruby 2.7.8 for rails-7.0
410
+ env_vars:
411
+ - *2
412
+ - *3
413
+ - *4
414
+ - *5
415
+ - name: RUBY_VERSION
416
+ value: 2.7.8
417
+ - name: GEMSET
418
+ value: rails-7.0
419
+ - name: BUNDLE_GEMFILE
420
+ value: gemfiles/rails-7.0.gemfile
421
+ - name: _RUBYGEMS_VERSION
422
+ value: latest
423
+ - name: _BUNDLER_VERSION
424
+ value: latest
425
+ commands:
426
+ - "./support/bundler_wrapper exec rake test"
427
+ - name: Ruby 2.7.8 for sequel
428
+ env_vars:
429
+ - *2
430
+ - *3
431
+ - *4
432
+ - *5
433
+ - name: RUBY_VERSION
434
+ value: 2.7.8
435
+ - name: GEMSET
436
+ value: sequel
437
+ - name: BUNDLE_GEMFILE
438
+ value: gemfiles/sequel.gemfile
439
+ - name: _RUBYGEMS_VERSION
440
+ value: latest
441
+ - name: _BUNDLER_VERSION
442
+ value: latest
443
+ commands:
444
+ - "./support/bundler_wrapper exec rake test"
445
+ - name: Ruby 2.7.8 for sinatra
446
+ env_vars:
447
+ - *2
448
+ - *3
449
+ - *4
450
+ - *5
451
+ - name: RUBY_VERSION
452
+ value: 2.7.8
453
+ - name: GEMSET
454
+ value: sinatra
455
+ - name: BUNDLE_GEMFILE
456
+ value: gemfiles/sinatra.gemfile
457
+ - name: _RUBYGEMS_VERSION
458
+ value: latest
459
+ - name: _BUNDLER_VERSION
460
+ value: latest
461
+ commands:
462
+ - "./support/bundler_wrapper exec rake test"
463
+ - name: Ruby 2.7.8 for webmachine1
464
+ env_vars:
465
+ - *2
466
+ - *3
467
+ - *4
468
+ - *5
469
+ - name: RUBY_VERSION
470
+ value: 2.7.8
471
+ - name: GEMSET
472
+ value: webmachine1
473
+ - name: BUNDLE_GEMFILE
474
+ value: gemfiles/webmachine1.gemfile
475
+ - name: _RUBYGEMS_VERSION
476
+ value: latest
477
+ - name: _BUNDLER_VERSION
478
+ value: latest
479
+ commands:
480
+ - "./support/bundler_wrapper exec rake test"
481
+ - name: Ruby 2.7.8 for webmachine2
482
+ env_vars:
483
+ - *2
484
+ - *3
485
+ - *4
486
+ - *5
487
+ - name: RUBY_VERSION
488
+ value: 2.7.8
489
+ - name: GEMSET
490
+ value: webmachine2
491
+ - name: BUNDLE_GEMFILE
492
+ value: gemfiles/webmachine2.gemfile
493
+ - name: _RUBYGEMS_VERSION
494
+ value: latest
495
+ - name: _BUNDLER_VERSION
496
+ value: latest
497
+ commands:
498
+ - "./support/bundler_wrapper exec rake test"
499
+ - name: Ruby 3.0.5
500
+ dependencies:
501
+ - Validation
502
+ task:
503
+ prologue:
504
+ commands:
505
+ - cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum
506
+ appsignal.gemspec)
507
+ - cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE)-$(checksum
508
+ appsignal.gemspec)
509
+ - "./support/install_deps"
510
+ - bundle config set clean 'true'
511
+ - "./support/bundler_wrapper install --jobs=3 --retry=3"
512
+ - "./support/bundler_wrapper exec rake extension:install"
513
+ epilogue: *1
514
+ jobs:
515
+ - name: Ruby 3.0.5 for no_dependencies
516
+ env_vars:
517
+ - *2
518
+ - *3
519
+ - *4
520
+ - *5
182
521
  - name: RUBY_VERSION
183
522
  value: 3.0.5
184
523
  - name: GEMSET
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # AppSignal for Ruby gem Changelog
2
2
 
3
+ ## 3.4.12
4
+
5
+ ### Added
6
+
7
+ - [441de353](https://github.com/appsignal/appsignal-ruby/commit/441de3537e7a8f36dd2460149c171aaa80929e53) patch - Add an option to not start AppSignal on config file errors. When the `config/appsignal.yml` file raises an error (due to ERB syntax issues or ERB errors), it will currently ignore the config file and try to make a configuration work from the other config sources (default, auto detection and system environment variables). This can cause unexpected behavior, because the config from the config file is not part of the loaded config.
8
+
9
+ In future versions of the Ruby gem, AppSignal will not start when the config file contains an error. To opt-in to this new behavior, set the `APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR` system environment variable to either `1` or `true`.
10
+
11
+ ### Changed
12
+
13
+ - [a42da92b](https://github.com/appsignal/appsignal-ruby/commit/a42da92b1ff16c48eb40dc081d3b4fbd6480c7c0) patch - Log an error when sample data is of an invalid type. Accepted types are Array and Hash. If any other types are given, it will log an error to the `appsignal.log` file.
14
+ - [8e636323](https://github.com/appsignal/appsignal-ruby/commit/8e6363232dc7fabe5f1aeae5758802e4c8d6cbfa) patch - Bump agent to 6133900.
15
+
16
+ - Fix `disk_inodes_usage` metric name format to not be interpreted as a JSON object.
17
+
18
+ ## 3.4.11
19
+
20
+ ### Added
21
+
22
+ - [4722292d](https://github.com/appsignal/appsignal-ruby/commit/4722292d022fb7ff7f3403b964b24e82112e93bd) patch - Re-add support for Ruby 2.7.
23
+ - [d782f9a6](https://github.com/appsignal/appsignal-ruby/commit/d782f9a6db0bd679f01c543900b39fc15124a25f) patch - Add the `host_role` config option. This config option can be set per host to generate some metrics automatically per host and possibly do things like grouping in the future.
24
+
25
+ ### Changed
26
+
27
+ - [f61f4f68](https://github.com/appsignal/appsignal-ruby/commit/f61f4f68699f022d3d9dbb0fa5dc98881923a001) patch - Bump agent to version d789895.
28
+
29
+ - Increase short data truncation from 2000 to 10000 characters.
30
+
3
31
  ## 3.4.10
4
32
 
5
33
  ### Changed
data/appsignal.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
20
20
  gem.name = "appsignal"
21
21
  gem.require_paths = %w[lib ext]
22
22
  gem.version = Appsignal::VERSION
23
- gem.required_ruby_version = ">= 3.0"
23
+ gem.required_ruby_version = ">= 2.7"
24
24
  # Default extension installer. Overridden by JRuby gemspec as defined in
25
25
  # `Rakefile`.
26
26
  gem.extensions = %w[ext/extconf.rb]
data/build_matrix.yml CHANGED
@@ -172,6 +172,7 @@ matrix:
172
172
  - "rails-7.0"
173
173
 
174
174
  ruby:
175
+ - ruby: "2.7.8"
175
176
  - ruby: "3.0.5"
176
177
  - ruby: "3.1.3"
177
178
  - ruby: "3.2.1"
@@ -193,12 +194,14 @@ matrix:
193
194
  - gem: "psych-3"
194
195
  only:
195
196
  ruby:
197
+ - "2.7.8"
196
198
  - "3.0.5"
197
199
  - "3.1.3"
198
200
  - "3.2.1"
199
201
  - gem: "psych-4"
200
202
  only:
201
203
  ruby:
204
+ - "2.7.8"
202
205
  - "3.0.5"
203
206
  - "3.1.3"
204
207
  - "3.2.1"
@@ -207,11 +210,13 @@ matrix:
207
210
  - gem: "rails-6.0"
208
211
  only:
209
212
  ruby:
213
+ - "2.7.8"
210
214
  - "3.0.5"
211
215
  - "jruby-9.4.1.0"
212
216
  - gem: "rails-6.1"
213
217
  only:
214
218
  ruby:
219
+ - "2.7.8"
215
220
  - "3.0.5"
216
221
  - "3.1.3"
217
222
  - "3.2.1"
@@ -219,6 +224,7 @@ matrix:
219
224
  - gem: "rails-7.0"
220
225
  only:
221
226
  ruby:
227
+ - "2.7.8"
222
228
  - "3.0.5"
223
229
  - "3.1.3"
224
230
  - "3.2.1"
data/ext/agent.rb CHANGED
@@ -6,7 +6,7 @@
6
6
  # Modifications to this file will be overwritten with the next agent release.
7
7
 
8
8
  APPSIGNAL_AGENT_CONFIG = {
9
- "version" => "6bec691",
9
+ "version" => "6133900",
10
10
  "mirrors" => [
11
11
  "https://appsignal-agent-releases.global.ssl.fastly.net",
12
12
  "https://d135dj0rjqvssy.cloudfront.net"
@@ -14,131 +14,131 @@ APPSIGNAL_AGENT_CONFIG = {
14
14
  "triples" => {
15
15
  "x86_64-darwin" => {
16
16
  "static" => {
17
- "checksum" => "bef6b987040f2d5feb8d4e2d9483bfa89c75b709a1b9a297b4b736643b488c6a",
17
+ "checksum" => "19cfea536fc6c4a8fe335a26d14ce955b422c23217902642f95d7df670152238",
18
18
  "filename" => "appsignal-x86_64-darwin-all-static.tar.gz"
19
19
  },
20
20
  "dynamic" => {
21
- "checksum" => "82b1f842b336a2b7c409d2d59f359288b6b2e641e870ead4ef0f8b98603e30f0",
21
+ "checksum" => "f5c4b66b45faac47473befdbe286a037d8fca9386339b00f59be9e9505d15b13",
22
22
  "filename" => "appsignal-x86_64-darwin-all-dynamic.tar.gz"
23
23
  }
24
24
  },
25
25
  "universal-darwin" => {
26
26
  "static" => {
27
- "checksum" => "bef6b987040f2d5feb8d4e2d9483bfa89c75b709a1b9a297b4b736643b488c6a",
27
+ "checksum" => "19cfea536fc6c4a8fe335a26d14ce955b422c23217902642f95d7df670152238",
28
28
  "filename" => "appsignal-x86_64-darwin-all-static.tar.gz"
29
29
  },
30
30
  "dynamic" => {
31
- "checksum" => "82b1f842b336a2b7c409d2d59f359288b6b2e641e870ead4ef0f8b98603e30f0",
31
+ "checksum" => "f5c4b66b45faac47473befdbe286a037d8fca9386339b00f59be9e9505d15b13",
32
32
  "filename" => "appsignal-x86_64-darwin-all-dynamic.tar.gz"
33
33
  }
34
34
  },
35
35
  "aarch64-darwin" => {
36
36
  "static" => {
37
- "checksum" => "ff083420f6ac000d2791800ba641ee331ac8757e298939879ea6f35d35eea80b",
37
+ "checksum" => "4fa0dbccba79f70edc6844a86bfd047ccdd612d752b65aff46fe0e21d8a610ea",
38
38
  "filename" => "appsignal-aarch64-darwin-all-static.tar.gz"
39
39
  },
40
40
  "dynamic" => {
41
- "checksum" => "393e8a2812968d9a44afaf1fbf413cfb352af9dfd300f0d0f70865ba17e56ee2",
41
+ "checksum" => "f86e88647be6c64f0f1f56b1ac15e0e4453c7e4a6c997fd5e510cf459c572a57",
42
42
  "filename" => "appsignal-aarch64-darwin-all-dynamic.tar.gz"
43
43
  }
44
44
  },
45
45
  "arm64-darwin" => {
46
46
  "static" => {
47
- "checksum" => "ff083420f6ac000d2791800ba641ee331ac8757e298939879ea6f35d35eea80b",
47
+ "checksum" => "4fa0dbccba79f70edc6844a86bfd047ccdd612d752b65aff46fe0e21d8a610ea",
48
48
  "filename" => "appsignal-aarch64-darwin-all-static.tar.gz"
49
49
  },
50
50
  "dynamic" => {
51
- "checksum" => "393e8a2812968d9a44afaf1fbf413cfb352af9dfd300f0d0f70865ba17e56ee2",
51
+ "checksum" => "f86e88647be6c64f0f1f56b1ac15e0e4453c7e4a6c997fd5e510cf459c572a57",
52
52
  "filename" => "appsignal-aarch64-darwin-all-dynamic.tar.gz"
53
53
  }
54
54
  },
55
55
  "arm-darwin" => {
56
56
  "static" => {
57
- "checksum" => "ff083420f6ac000d2791800ba641ee331ac8757e298939879ea6f35d35eea80b",
57
+ "checksum" => "4fa0dbccba79f70edc6844a86bfd047ccdd612d752b65aff46fe0e21d8a610ea",
58
58
  "filename" => "appsignal-aarch64-darwin-all-static.tar.gz"
59
59
  },
60
60
  "dynamic" => {
61
- "checksum" => "393e8a2812968d9a44afaf1fbf413cfb352af9dfd300f0d0f70865ba17e56ee2",
61
+ "checksum" => "f86e88647be6c64f0f1f56b1ac15e0e4453c7e4a6c997fd5e510cf459c572a57",
62
62
  "filename" => "appsignal-aarch64-darwin-all-dynamic.tar.gz"
63
63
  }
64
64
  },
65
65
  "aarch64-linux" => {
66
66
  "static" => {
67
- "checksum" => "755e1721befe259d4b13d914020ea7793399c1dc7abdce1e6695128f30e8670d",
67
+ "checksum" => "cdd75637940fcfd369b569e873048c7d37a3844d9d31d783e4459b375b78ee0e",
68
68
  "filename" => "appsignal-aarch64-linux-all-static.tar.gz"
69
69
  },
70
70
  "dynamic" => {
71
- "checksum" => "2ab9d58d8a339aba33609411f17551b9f4aed017bc7ce1161c5a5d1303d4be79",
71
+ "checksum" => "99b52c29d497d63f02a4ff7162152641b51e7ecd292d07f0330e7d4f3abc8075",
72
72
  "filename" => "appsignal-aarch64-linux-all-dynamic.tar.gz"
73
73
  }
74
74
  },
75
75
  "i686-linux" => {
76
76
  "static" => {
77
- "checksum" => "2590d6ecb89242849ea7bd0923b074520fcf370c360095d2b25f2ea7a8f8e310",
77
+ "checksum" => "a9374d1fd4baae84f1c4a74957cbb8c919b29ae2ab05a571ff75b9ca483717ab",
78
78
  "filename" => "appsignal-i686-linux-all-static.tar.gz"
79
79
  },
80
80
  "dynamic" => {
81
- "checksum" => "dec855be6787fc39f212eb8fd3f424be0c09fe7538c71eb86fde5d76c891b0ff",
81
+ "checksum" => "d643c72add6fe1054faff034101cf5a2676a169c7bff479f3d79e71875598b8a",
82
82
  "filename" => "appsignal-i686-linux-all-dynamic.tar.gz"
83
83
  }
84
84
  },
85
85
  "x86-linux" => {
86
86
  "static" => {
87
- "checksum" => "2590d6ecb89242849ea7bd0923b074520fcf370c360095d2b25f2ea7a8f8e310",
87
+ "checksum" => "a9374d1fd4baae84f1c4a74957cbb8c919b29ae2ab05a571ff75b9ca483717ab",
88
88
  "filename" => "appsignal-i686-linux-all-static.tar.gz"
89
89
  },
90
90
  "dynamic" => {
91
- "checksum" => "dec855be6787fc39f212eb8fd3f424be0c09fe7538c71eb86fde5d76c891b0ff",
91
+ "checksum" => "d643c72add6fe1054faff034101cf5a2676a169c7bff479f3d79e71875598b8a",
92
92
  "filename" => "appsignal-i686-linux-all-dynamic.tar.gz"
93
93
  }
94
94
  },
95
95
  "x86_64-linux" => {
96
96
  "static" => {
97
- "checksum" => "54b033f215d84fbe819092a553e4921c77a2f686f9924f336c8312cb9efd1d57",
97
+ "checksum" => "bd625ed84100d0632b298ac602b152463628c41afe56a8621745cdae626f8413",
98
98
  "filename" => "appsignal-x86_64-linux-all-static.tar.gz"
99
99
  },
100
100
  "dynamic" => {
101
- "checksum" => "077e417344bd7eed10ca48e62d1ce777f8072e4ef8cc8c384faecb8309339250",
101
+ "checksum" => "0daa644acfee46848282ad733b175e4994e7faf64c8bc046d2efff2b8fc1afdd",
102
102
  "filename" => "appsignal-x86_64-linux-all-dynamic.tar.gz"
103
103
  }
104
104
  },
105
105
  "x86_64-linux-musl" => {
106
106
  "static" => {
107
- "checksum" => "3c161e852b44e2f0ad1ccd849150255fc0ce39c3b0895fb003c403de12ced331",
107
+ "checksum" => "7988c4a2a6ba5d59be2186ce9bf51ab50b6537a60888b08c8e9066172516e59d",
108
108
  "filename" => "appsignal-x86_64-linux-musl-all-static.tar.gz"
109
109
  },
110
110
  "dynamic" => {
111
- "checksum" => "11ea5500197d98fc6bb06c09d61042e9547f2a0880d9367301665a201a176935",
111
+ "checksum" => "93e47c9400ddae42a8cd2b80c09c9134ee96a76bf622c3ad5d53b776fec1a3f0",
112
112
  "filename" => "appsignal-x86_64-linux-musl-all-dynamic.tar.gz"
113
113
  }
114
114
  },
115
115
  "aarch64-linux-musl" => {
116
116
  "static" => {
117
- "checksum" => "bed2cb1dc599528ac4bc1939da41900f4651013bc97433f2d1c2e6864acb6b7e",
117
+ "checksum" => "8e5fe2a8bc4cb7de4ba7d61fec48f15aa0cd580050f67752f07625853636eb16",
118
118
  "filename" => "appsignal-aarch64-linux-musl-all-static.tar.gz"
119
119
  },
120
120
  "dynamic" => {
121
- "checksum" => "23e0ae75413b92c55b8c975347f647d5f603da56730ad926c3f7e6ddd050dba6",
121
+ "checksum" => "01f993b3320f0377ef9f652bb215ce268da208f46a6f59ad0c0e71f57257b4ef",
122
122
  "filename" => "appsignal-aarch64-linux-musl-all-dynamic.tar.gz"
123
123
  }
124
124
  },
125
125
  "x86_64-freebsd" => {
126
126
  "static" => {
127
- "checksum" => "19b885bccb30a4209608ac1ac3ecaf07f1cd8e78c95dbdb94df51f73360c01bb",
127
+ "checksum" => "09e21821eb98ad6afdb5d3708b67ea25799aedbee2ccb0d566b99d9c5703cb1e",
128
128
  "filename" => "appsignal-x86_64-freebsd-all-static.tar.gz"
129
129
  },
130
130
  "dynamic" => {
131
- "checksum" => "05555261c4c64f11cc96c6c499d0890ec3941d9c831e65b732cd2deaf0ddd216",
131
+ "checksum" => "e77592de9dd7ff41efb6c1d2d88e06fa7b663e9ff009392bb971b1333e0f28d7",
132
132
  "filename" => "appsignal-x86_64-freebsd-all-dynamic.tar.gz"
133
133
  }
134
134
  },
135
135
  "amd64-freebsd" => {
136
136
  "static" => {
137
- "checksum" => "19b885bccb30a4209608ac1ac3ecaf07f1cd8e78c95dbdb94df51f73360c01bb",
137
+ "checksum" => "09e21821eb98ad6afdb5d3708b67ea25799aedbee2ccb0d566b99d9c5703cb1e",
138
138
  "filename" => "appsignal-x86_64-freebsd-all-static.tar.gz"
139
139
  },
140
140
  "dynamic" => {
141
- "checksum" => "05555261c4c64f11cc96c6c499d0890ec3941d9c831e65b732cd2deaf0ddd216",
141
+ "checksum" => "e77592de9dd7ff41efb6c1d2d88e06fa7b663e9ff009392bb971b1333e0f28d7",
142
142
  "filename" => "appsignal-x86_64-freebsd-all-dynamic.tar.gz"
143
143
  }
144
144
  }
data/ext/base.rb CHANGED
@@ -14,7 +14,7 @@ EXT_PATH = File.expand_path(__dir__).freeze
14
14
 
15
15
  AGENT_PLATFORM = Appsignal::System.agent_platform
16
16
  AGENT_ARCHITECTURE = Appsignal::System.agent_architecture
17
- TARGET_TRIPLE = "#{AGENT_ARCHITECTURE}-#{AGENT_PLATFORM}".freeze
17
+ TARGET_TRIPLE = "#{AGENT_ARCHITECTURE}-#{AGENT_PLATFORM}"
18
18
  ARCH_CONFIG = APPSIGNAL_AGENT_CONFIG["triples"][TARGET_TRIPLE].freeze
19
19
  CA_CERT_PATH = File.join(EXT_PATH, "../resources/cacert.pem").freeze
20
20
 
@@ -83,6 +83,7 @@ module Appsignal
83
83
  "APPSIGNAL_FILTER_PARAMETERS" => :filter_parameters,
84
84
  "APPSIGNAL_FILTER_SESSION_DATA" => :filter_session_data,
85
85
  "APPSIGNAL_HOSTNAME" => :hostname,
86
+ "APPSIGNAL_HOST_ROLE" => :host_role,
86
87
  "APPSIGNAL_HTTP_PROXY" => :http_proxy,
87
88
  "APPSIGNAL_IGNORE_ACTIONS" => :ignore_actions,
88
89
  "APPSIGNAL_IGNORE_ERRORS" => :ignore_errors,
@@ -115,6 +116,7 @@ module Appsignal
115
116
  APPSIGNAL_BIND_ADDRESS
116
117
  APPSIGNAL_CA_FILE_PATH
117
118
  APPSIGNAL_HOSTNAME
119
+ APPSIGNAL_HOST_ROLE
118
120
  APPSIGNAL_HTTP_PROXY
119
121
  APPSIGNAL_LOG
120
122
  APPSIGNAL_LOG_LEVEL
@@ -230,6 +232,7 @@ module Appsignal
230
232
  # How to integrate AppSignal manually
231
233
  def initialize(root_path, env, initial_config = {}, logger = Appsignal.logger,
232
234
  config_file = nil)
235
+ @config_file_error = false
233
236
  @root_path = root_path
234
237
  @config_file = config_file
235
238
  @logger = logger
@@ -337,6 +340,7 @@ module Appsignal
337
340
  ENV["_APPSIGNAL_FILTER_PARAMETERS"] = config_hash[:filter_parameters].join(",")
338
341
  ENV["_APPSIGNAL_FILTER_SESSION_DATA"] = config_hash[:filter_session_data].join(",")
339
342
  ENV["_APPSIGNAL_HOSTNAME"] = config_hash[:hostname].to_s
343
+ ENV["_APPSIGNAL_HOST_ROLE"] = config_hash[:host_role].to_s
340
344
  ENV["_APPSIGNAL_HTTP_PROXY"] = config_hash[:http_proxy]
341
345
  ENV["_APPSIGNAL_IGNORE_ACTIONS"] = config_hash[:ignore_actions].join(",")
342
346
  ENV["_APPSIGNAL_IGNORE_ERRORS"] = config_hash[:ignore_errors].join(",")
@@ -414,8 +418,20 @@ module Appsignal
414
418
  nil
415
419
  end
416
420
  rescue => e
417
- message = "An error occured while loading the AppSignal config file." \
418
- " Skipping file config.\n" \
421
+ # TODO: Remove in the next major version
422
+ @config_file_error = true
423
+ extra_message =
424
+ if inactive_on_config_file_error?
425
+ "Not starting AppSignal because " \
426
+ "APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR is set."
427
+ else
428
+ "Skipping file config. In future versions AppSignal will not start " \
429
+ "on a config file error. To opt-in to this new behavior set " \
430
+ "'APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR=1' in your system " \
431
+ "environment."
432
+ end
433
+ message = "An error occured while loading the AppSignal config file. " \
434
+ "#{extra_message}\n" \
419
435
  "File: #{config_file.inspect}\n" \
420
436
  "#{e.class.name}: #{e}"
421
437
  Kernel.warn "appsignal: #{message}"
@@ -482,6 +498,12 @@ module Appsignal
482
498
  # stick around as a structure for future deprecations.
483
499
  def determine_overrides
484
500
  config = {}
501
+ # If an error was detected during config file reading/parsing and the new
502
+ # behavior is enabled to not start AppSignal on incomplete config, do not
503
+ # start AppSignal.
504
+ # TODO: Make default behavior in next major version. Remove
505
+ # `inactive_on_config_file_error?` call.
506
+ config[:active] = false if @config_file_error && inactive_on_config_file_error?
485
507
  skip_session_data = config_hash[:skip_session_data]
486
508
  send_session_data = config_hash[:send_session_data]
487
509
  if skip_session_data.nil? # Deprecated option is not set
@@ -505,5 +527,11 @@ module Appsignal
505
527
  config_hash[key] = value
506
528
  end
507
529
  end
530
+
531
+ # Does it use the new behavior?
532
+ def inactive_on_config_file_error?
533
+ value = ENV.fetch("APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR", false)
534
+ ["1", "true"].include?(value)
535
+ end
508
536
  end
509
537
  end
@@ -10,7 +10,7 @@ module Appsignal
10
10
  attr_reader :root_path
11
11
 
12
12
  def initialize
13
- @root_path = "#{Rails.root}/".freeze
13
+ @root_path = "#{Rails.root}/"
14
14
  end
15
15
 
16
16
  def format(payload)
@@ -84,6 +84,6 @@ module Appsignal
84
84
  end
85
85
  end
86
86
 
87
- Dir.glob(File.expand_path("event_formatter/**/*.rb", __dir__)).each do |file|
87
+ Dir.glob(File.expand_path("event_formatter/**/*.rb", __dir__)).sort.each do |file|
88
88
  require file
89
89
  end
@@ -320,7 +320,14 @@ module Appsignal
320
320
  end
321
321
 
322
322
  def set_sample_data(key, data)
323
- return unless key && data && (data.is_a?(Array) || data.is_a?(Hash))
323
+ return unless key && data
324
+
325
+ if !data.is_a?(Array) && !data.is_a?(Hash)
326
+ Appsignal.logger.error(
327
+ "Invalid sample data for '#{key}'. Value is not an Array or Hash: '#{data.inspect}'"
328
+ )
329
+ return
330
+ end
324
331
 
325
332
  @ext.set_sample_data(
326
333
  key.to_s,
@@ -539,7 +546,7 @@ module Appsignal
539
546
 
540
547
  metadata
541
548
  .transform_keys(&:to_s)
542
- .except(*Appsignal.config[:filter_metadata])
549
+ .reject { |key, _value| Appsignal.config[:filter_metadata].include?(key) }
543
550
  end
544
551
 
545
552
  # Returns the environment for a transaction.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Appsignal
4
- VERSION = "3.4.10"
4
+ VERSION = "3.4.12"
5
5
  end
@@ -294,19 +294,48 @@ describe Appsignal::Config do
294
294
  end
295
295
  let(:config) { Appsignal::Config.new(config_path, "foo") }
296
296
 
297
- it "logs & prints an error, skipping the file source" do
298
- stdout = std_stream
299
- stderr = std_stream
300
- log = capture_logs { capture_std_streams(stdout, stderr) { config } }
301
- message = "An error occured while loading the AppSignal config file. " \
302
- "Skipping file config.\n" \
303
- "File: #{File.join(config_path, "config", "appsignal.yml").inspect}\n" \
304
- "KeyError: key not found"
305
- expect(log).to contains_log :error, message
306
- expect(log).to include("/appsignal/config.rb:") # Backtrace
307
- expect(stdout.read).to_not include("appsignal:")
308
- expect(stderr.read).to include "appsignal: #{message}"
309
- expect(config.file_config).to eql({})
297
+ context "when APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR is not set" do
298
+ it "logs & prints an error, skipping the file source" do
299
+ stdout = std_stream
300
+ stderr = std_stream
301
+ log = capture_logs { capture_std_streams(stdout, stderr) { config } }
302
+ message = "An error occured while loading the AppSignal config file. " \
303
+ "Skipping file config. " \
304
+ "In future versions AppSignal will not start on a config file " \
305
+ "error. To opt-in to this new behavior set " \
306
+ "'APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR=1' in your system " \
307
+ "environment.\n" \
308
+ "File: #{File.join(config_path, "config", "appsignal.yml").inspect}\n" \
309
+ "KeyError: key not found"
310
+ expect(log).to contains_log :error, message
311
+ expect(log).to include("/appsignal/config.rb:") # Backtrace
312
+ expect(stdout.read).to_not include("appsignal:")
313
+ expect(stderr.read).to include "appsignal: #{message}"
314
+ expect(config.file_config).to eql({})
315
+ end
316
+ end
317
+
318
+ context "when APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR=1 is set" do
319
+ it "does not start AppSignal, logs & prints an error" do
320
+ stdout = std_stream
321
+ stderr = std_stream
322
+ ENV["APPSIGNAL_ACTIVE"] = "true"
323
+ ENV["APPSIGNAL_APP_NAME"] = "My app"
324
+ ENV["APPSIGNAL_APP_ENV"] = "dev"
325
+ ENV["APPSIGNAL_PUSH_API_KEY"] = "something valid"
326
+ ENV["APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR"] = "1"
327
+ log = capture_logs { capture_std_streams(stdout, stderr) { config } }
328
+ message = "An error occured while loading the AppSignal config file. " \
329
+ "Not starting AppSignal because APPSIGNAL_INACTIVE_ON_CONFIG_FILE_ERROR is set.\n" \
330
+ "File: #{File.join(config_path, "config", "appsignal.yml").inspect}\n" \
331
+ "KeyError: key not found"
332
+ expect(log).to contains_log :error, message
333
+ expect(log).to include("/appsignal/config.rb:") # Backtrace
334
+ expect(stdout.read).to_not include("appsignal:")
335
+ expect(stderr.read).to include "appsignal: #{message}"
336
+ expect(config.file_config).to eql({})
337
+ expect(config.active?).to be(false)
338
+ end
310
339
  end
311
340
  end
312
341
 
@@ -641,6 +670,7 @@ describe Appsignal::Config do
641
670
  expect(ENV.fetch("_APPSIGNAL_RUNNING_IN_CONTAINER", nil)).to eq "false"
642
671
  expect(ENV.fetch("_APPSIGNAL_ENABLE_HOST_METRICS", nil)).to eq "true"
643
672
  expect(ENV.fetch("_APPSIGNAL_HOSTNAME", nil)).to eq ""
673
+ expect(ENV.fetch("_APPSIGNAL_HOST_ROLE", nil)).to eq ""
644
674
  expect(ENV.fetch("_APPSIGNAL_PROCESS_NAME", nil)).to include "rspec"
645
675
  expect(ENV.fetch("_APPSIGNAL_CA_FILE_PATH", nil))
646
676
  .to eq File.join(resources_dir, "cacert.pem")
@@ -667,6 +697,17 @@ describe Appsignal::Config do
667
697
  end
668
698
  end
669
699
 
700
+ context "with :host_role" do
701
+ before do
702
+ config[:host_role] = "host role"
703
+ config.write_to_environment
704
+ end
705
+
706
+ it "sets the modified :host_role" do
707
+ expect(ENV.fetch("_APPSIGNAL_HOST_ROLE", nil)).to eq "host role"
708
+ end
709
+ end
710
+
670
711
  context "with :working_dir_path" do
671
712
  before do
672
713
  config[:working_dir_path] = "/tmp/appsignal2"
@@ -355,7 +355,7 @@ describe Appsignal::Transaction do
355
355
  end
356
356
 
357
357
  describe "#set_tags" do
358
- let(:long_string) { "a" * 2001 }
358
+ let(:long_string) { "a" * 10_001 }
359
359
  before do
360
360
  transaction.set_tags(
361
361
  :valid_key => "valid_value",
@@ -377,7 +377,7 @@ describe Appsignal::Transaction do
377
377
  "valid_string_key" => "valid_value",
378
378
  "both_symbols" => "valid_value",
379
379
  "integer_value" => 1,
380
- "too_long_value" => "#{"a" * 2000}...",
380
+ "too_long_value" => "#{"a" * 10_000}...",
381
381
  long_string => "too_long_key"
382
382
  )
383
383
  end
@@ -688,6 +688,8 @@ describe Appsignal::Transaction do
688
688
  transaction.set_sample_data("params", "string")
689
689
 
690
690
  expect(transaction.to_h["sample_data"]).to eq({})
691
+ expect(log_contents(log)).to contains_log :error,
692
+ %(Invalid sample data for 'params'. Value is not an Array or Hash: '"string"')
691
693
  end
692
694
  end
693
695
 
data/spec/spec_helper.rb CHANGED
@@ -12,25 +12,25 @@ require "rspec"
12
12
  require "timecop"
13
13
  require "webmock/rspec"
14
14
 
15
- Dir[File.join(APPSIGNAL_SPEC_DIR, "support", "helpers", "*.rb")].each do |f|
15
+ Dir[File.join(APPSIGNAL_SPEC_DIR, "support", "helpers", "*.rb")].sort.each do |f|
16
16
  require f
17
17
  end
18
- Dir[File.join(DirectoryHelper.support_dir, "mocks", "*.rb")].each do |f|
18
+ Dir[File.join(DirectoryHelper.support_dir, "mocks", "*.rb")].sort.each do |f|
19
19
  require f
20
20
  end
21
- Dir[File.join(DirectoryHelper.support_dir, "matchers", "*.rb")].each do |f|
21
+ Dir[File.join(DirectoryHelper.support_dir, "matchers", "*.rb")].sort.each do |f|
22
22
  require f
23
23
  end
24
- Dir[File.join(APPSIGNAL_SPEC_DIR, "support/shared_examples", "*.rb")].each do |f|
24
+ Dir[File.join(APPSIGNAL_SPEC_DIR, "support/shared_examples", "*.rb")].sort.each do |f|
25
25
  require f
26
26
  end
27
27
  if DependencyHelper.rails_present?
28
- Dir[File.join(DirectoryHelper.support_dir, "rails", "*.rb")].each do |f|
28
+ Dir[File.join(DirectoryHelper.support_dir, "rails", "*.rb")].sort.each do |f|
29
29
  require f
30
30
  end
31
31
  end
32
32
  if DependencyHelper.hanami2_present?
33
- Dir[File.join(DirectoryHelper.support_dir, "hanami", "*.rb")].each do |f|
33
+ Dir[File.join(DirectoryHelper.support_dir, "hanami", "*.rb")].sort.each do |f|
34
34
  require f
35
35
  end
36
36
  end
@@ -12,7 +12,7 @@ RSpec::Matchers.define :have_colorized_text do |color, text|
12
12
  attr_reader :expected
13
13
  end
14
14
 
15
- COLOR_TAG_MATCHER_REGEX = /\e\[(\d+)m/
15
+ COLOR_TAG_MATCHER_REGEX = /\e\[(\d+)m/.freeze
16
16
  RSpec::Matchers.define :have_color_markers do
17
17
  match do |actual|
18
18
  actual =~ COLOR_TAG_MATCHER_REGEX
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.10
4
+ version: 3.4.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-07-31 00:00:00.000000000 Z
13
+ date: 2023-08-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -431,7 +431,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
431
431
  requirements:
432
432
  - - ">="
433
433
  - !ruby/object:Gem::Version
434
- version: '3.0'
434
+ version: '2.7'
435
435
  required_rubygems_version: !ruby/object:Gem::Requirement
436
436
  requirements:
437
437
  - - ">="