appsignal 4.7.0-java → 4.7.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardoc/checksums +132 -0
- data/.yardoc/complete +0 -0
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/CHANGELOG.md +30 -0
- data/build_matrix.yml +9 -0
- data/lib/appsignal/config.rb +2 -0
- data/lib/appsignal/environment.rb +1 -0
- data/lib/appsignal/hooks/code_ownership.rb +25 -0
- data/lib/appsignal/hooks.rb +1 -0
- data/lib/appsignal/integrations/code_ownership.rb +21 -0
- data/lib/appsignal/integrations/railtie.rb +2 -1
- data/lib/appsignal/rack/event_handler.rb +4 -4
- data/lib/appsignal/rack/event_middleware.rb +56 -53
- data/lib/appsignal/version.rb +1 -1
- data/lib/appsignal.rb +1 -1
- data/sig/appsignal.rbi +1 -1
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1641ec17d40f22ec483215b1102868d419f67a4034088a40e2403a314aa1479
|
4
|
+
data.tar.gz: 277298cd6d723946a42c66fb574176220fc8d68ff2b5b9953c5fc649a7a77ff0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be6a2ef13cf9047e5790c0191835cc7595136deb6ae878bbd836ab38707b90ad3fecc8578f02ab7579dbba891585f390cddb52672a707df6509888cb7fdc2c9c
|
7
|
+
data.tar.gz: 67483b66bc177ba413f290b9f8baca5449600c8cad89028629246609e5654b2c2369cebf881a484fd7ae46b21298f20c6022e0e8479d02f3b2d59b7c715ee923
|
data/.yardoc/checksums
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
lib/appsignal.rb 66edad2106bea39dddc857dce9cf2ee66427a331
|
2
|
+
lib/appsignal/cli.rb db1ebf0c49bfc51822d218587c931a7047b6903e
|
3
|
+
lib/appsignal/demo.rb daee00ade75c3427a1bad928f7a4498eebc2261a
|
4
|
+
lib/appsignal/rack.rb 713550d983e18ff066521f7278abeec6f92f1346
|
5
|
+
lib/appsignal/span.rb 42075501993e50ae794be3ad754a23bd1962ffcc
|
6
|
+
lib/appsignal/hooks.rb 6bb70aa06b5cea30a1ebc57fcc3f439cb10a923a
|
7
|
+
lib/appsignal/utils.rb 988cac4ba65773012e692fd58e7ae26533d20e22
|
8
|
+
lib/appsignal/config.rb aebd8ca5e7ebb6eea9afe40c4ae0eedbc7328ae1
|
9
|
+
lib/appsignal/logger.rb 863b9a720043632af5a042f2cb5709a2a4623d68
|
10
|
+
lib/appsignal/marker.rb e66f08914ab3bb1c5a5b634701db4345ba98b488
|
11
|
+
lib/appsignal/probes.rb 4f7f902d9f7c524de33ed5a7327e7b39898db568
|
12
|
+
lib/appsignal/system.rb 905087ae561fdec4a784b0ca027aa9d834d94f9a
|
13
|
+
lib/appsignal/loaders.rb a1b13f2ef1b7da9f4690252e04fa7c0ede5de00b
|
14
|
+
lib/appsignal/version.rb e20aaf225ec904965a40ea8266d81c7a23540ee6
|
15
|
+
lib/appsignal/check_in.rb da21a8220078db8fbb5a48a2ebea233b745a9309
|
16
|
+
lib/appsignal/cli/demo.rb 41076a71123964e673aeab042774fdad1cf2df62
|
17
|
+
lib/appsignal/extension.rb 80f1757fd0cb1b10bc37786af00a99183ff0fa38
|
18
|
+
lib/appsignal/hooks/gvl.rb f49cb93a91c7ace49b52950ffbe863fed5756498
|
19
|
+
lib/appsignal/hooks/mri.rb a8bd8a1c64d7131af0aeae1b080bcb773c29bbb8
|
20
|
+
lib/appsignal/hooks/que.rb 37ff09fe4b651fa5ef966c006e16ee4c348fd3a0
|
21
|
+
lib/appsignal/auth_check.rb 11752555dde4d43657d5eb7c74cad147b059169e
|
22
|
+
lib/appsignal/capistrano.rb e9a0f7194fc4b9b9f4983759ecdc6f8fc78a0c00
|
23
|
+
lib/appsignal/hooks/http.rb 49ac855859f0c9ce5a3697b6ea9fdbf39cc8f37d
|
24
|
+
lib/appsignal/hooks/puma.rb 8ea7f884c3eb1a1caa5b998a9885fd9b22864c4c
|
25
|
+
lib/appsignal/hooks/rake.rb aa22fca3d7d304ecd66d876715735f901d512b47
|
26
|
+
lib/appsignal/probes/gvl.rb 40621e23747f18d18e1b3ae7902803d9ac1e4d61
|
27
|
+
lib/appsignal/probes/mri.rb fdc96477171782f769371303b1d2185723724920
|
28
|
+
lib/appsignal/utils/data.rb 272f47900c83be4d2ad6767a8a21da7011c7256b
|
29
|
+
lib/appsignal/utils/json.rb 3d1ab5d70a2f969ccd567deae251d79f96864750
|
30
|
+
lib/appsignal/cli/helpers.rb ece01ef348935931453a72b2d61bc54e498a3b08
|
31
|
+
lib/appsignal/cli/install.rb 58ed474a9e75fd71f172032e8ee8cced6fc0f4b0
|
32
|
+
lib/appsignal/environment.rb 3bbab88bc0f39efced39ff4d0704a82734e17a06
|
33
|
+
lib/appsignal/hooks/excon.rb a54a5abae9a049dc4410b16ef4cbfc9c72ce7421
|
34
|
+
lib/appsignal/hooks/redis.rb 9a70a1bbee74456f59ba0a1a2aabd4305019ef3b
|
35
|
+
lib/appsignal/sample_data.rb 6cd3f1edbf7d3dbf0e7ed8396919d651ff8d4124
|
36
|
+
lib/appsignal/transaction.rb 5389997e5c9a0153ed81ea1021698f57209bb0d0
|
37
|
+
lib/appsignal/transmitter.rb c9e546368c9ca91b7e559cc585d6cee2998b8472
|
38
|
+
lib/puma/plugin/appsignal.rb 56f45a1819f4268626e00a8b03d45f9c045843ea
|
39
|
+
lib/appsignal/cli/diagnose.rb fac1b6d30960251512a0da5a8efced1ca60dc274
|
40
|
+
lib/appsignal/hooks/resque.rb ddc3bc68c6efdd8fdf71946df8086ab2c8e1680e
|
41
|
+
lib/appsignal/hooks/sequel.rb ce4cf7aeb15e9b9ad1c172f77d5e99ceaaad9b04
|
42
|
+
lib/appsignal/utils/ndjson.rb 9e37982dae178494f86db0d689e2b5d6381fb639
|
43
|
+
lib/appsignal/check_in/cron.rb 31ee09304ad2b95fa05e86de2b260e710c4228a8
|
44
|
+
lib/appsignal/custom_marker.rb 7c03fcb423b8a0a4a9e764af9ca8d4058254446c
|
45
|
+
lib/appsignal/hooks/at_exit.rb 9d500bf8022e6306ea080a5e55503353caa55412
|
46
|
+
lib/appsignal/hooks/sidekiq.rb 47363db942f3ba5c03ee36b843fc0aa882ec1de4
|
47
|
+
lib/appsignal/hooks/unicorn.rb 849811ad49a1e167adfa1a4473bf66757b2e53ae
|
48
|
+
lib/appsignal/loaders/grape.rb ee67e520fd81487cfe7cd5e3f274430f1f010460
|
49
|
+
lib/appsignal/check_in/event.rb e12992100bb5ed0929f20c9e39b1430bd2856953
|
50
|
+
lib/appsignal/hooks/net_http.rb 354ad06f444444bfab2ee9afa828e1a50e01ac31
|
51
|
+
lib/appsignal/loaders/hanami.rb 148e07afebc7107d01da7ac31883eb69b114a931
|
52
|
+
lib/appsignal/probes/helpers.rb 63ccc305a4d151427ecf92b095e9073e092b7710
|
53
|
+
lib/appsignal/probes/sidekiq.rb 1eec4acd55c2994fc84a6aecf0ea4bbc3930929b
|
54
|
+
lib/appsignal/event_formatter.rb b381c5f7c19fc12ede31eafff503e29897af5acf
|
55
|
+
lib/appsignal/extension/jruby.rb 3606120b6dd40e29274f9374a7748f524ab6cc19
|
56
|
+
lib/appsignal/helpers/metrics.rb 7ed5894743f2f9d5d47df864ba1531e7782279d3
|
57
|
+
lib/appsignal/hooks/celluloid.rb b0e39f3de8d9ab2757fd65a5f0aae866020c7d41
|
58
|
+
lib/appsignal/hooks/ownership.rb 286189e09afb0ab2f9bf2385bdc00517067ae48c
|
59
|
+
lib/appsignal/hooks/passenger.rb 46771e1ced6fbc90fb291a23cd4946f2de595bc3
|
60
|
+
lib/appsignal/hooks/shoryuken.rb 3e402b842a767a36198d2a827f80bb43e9ff3ca5
|
61
|
+
lib/appsignal/internal_errors.rb 4d775b12b66d5fd7962a93c931310f9fa0d1e6c1
|
62
|
+
lib/appsignal/loaders/padrino.rb fbf33e69aa9d613b0bb094e86e914b25f85ca002
|
63
|
+
lib/appsignal/loaders/sinatra.rb 793c9da7a2218076b8c453af3dad761b666a3733
|
64
|
+
lib/appsignal/hooks/active_job.rb defcc95f8fb12a340e822852b3817a0e1865fef2
|
65
|
+
lib/appsignal/hooks/webmachine.rb 02f35096d4d58a4fb87f372e45fa859d840d1bcd
|
66
|
+
lib/appsignal/integrations/que.rb 098ee55bb54ac8d63744c4a55747d4bce79a2c5d
|
67
|
+
lib/appsignal/hooks/data_mapper.rb f51b139a6237954db634a2205ff21f69f54a0d75
|
68
|
+
lib/appsignal/hooks/delayed_job.rb b6feb82fbbe73ac671ba7b21017082bf35b2a362
|
69
|
+
lib/appsignal/hooks/dry_monitor.rb 26e3909a7bb2a4b2b8ba94aaf5191e586d75f9e0
|
70
|
+
lib/appsignal/integrations/http.rb 8db05e03ef8866bf02659a93648697534c0cb2c4
|
71
|
+
lib/appsignal/integrations/puma.rb 54e350af5b1144ba6ae7ea3554576ba12e4027b5
|
72
|
+
lib/appsignal/integrations/rake.rb 2453ec4594b32c07859f308204b08a333e2a4bc6
|
73
|
+
lib/appsignal/rack/body_wrapper.rb 4716bd661ea0d771d26ec5a32d5485aad4e8b199
|
74
|
+
lib/appsignal/check_in/scheduler.rb 385a26f761664ded050e5e83eb91c231078dfc63
|
75
|
+
lib/appsignal/cli/diagnose/paths.rb f91c0f59098d63aa84977744c4cebdfaf745b4a2
|
76
|
+
lib/appsignal/cli/diagnose/utils.rb 3705ee19b0c61b64e11596de5971600a8d387532
|
77
|
+
lib/appsignal/garbage_collection.rb d3c15b529902faa9aaadbba4f8f66cc7a8b6e8b5
|
78
|
+
lib/appsignal/hooks/action_cable.rb d79ea8aa05c439707dc9eda8f0e2f339204b1cf4
|
79
|
+
lib/appsignal/hooks/redis_client.rb f832f3d47cfa2da941570124987ae643fefcd55c
|
80
|
+
lib/appsignal/integrations/excon.rb 7f25d4c567cad1330772a824a03de510769c0632
|
81
|
+
lib/appsignal/integrations/redis.rb 2767d5d1c30648c94e1b9f5151eae735216af478
|
82
|
+
lib/appsignal/rack/event_handler.rb ada1934464bd42b592f0dca039d1174d74fd0047
|
83
|
+
lib/appsignal/utils/rails_helper.rb 40047e913fd1b03e34e1dc2d1d3f6f594cde8125
|
84
|
+
lib/appsignal/hooks/action_mailer.rb 721fe17441c469f2026bc4878c702a740a15cdc4
|
85
|
+
lib/appsignal/integrations/object.rb 737bfabf786be2b64bb1a15e60637a75d3858ec3
|
86
|
+
lib/appsignal/integrations/resque.rb b66ff57aeb4adcfd123e000028ca5a200fd4654a
|
87
|
+
lib/appsignal/hooks/code_ownership.rb 399f948116f481402255075b8385f4fc7ee2e555
|
88
|
+
lib/appsignal/integrations/railtie.rb 9bfdae1cfcf23dd5734e91957d937023c95881a0
|
89
|
+
lib/appsignal/integrations/sidekiq.rb fb7f94b9f2fb98ceea6540482da343d1f08363e7
|
90
|
+
lib/appsignal/integrations/unicorn.rb 0f85f9d7adfcc9c13c4424d9794eae3fb1d89438
|
91
|
+
lib/appsignal/integrations/net_http.rb f3f4b0aa755cd25608779c8b5165799782f23ece
|
92
|
+
lib/appsignal/rack/event_middleware.rb c8f00f99785bcf73028af7ed78772620db1cb9b4
|
93
|
+
lib/appsignal/rack/grape_middleware.rb 19a42821235ea1df52624be2805bb7cfafa879e8
|
94
|
+
lib/appsignal/integrations/ownership.rb cd87fcbdaf1e090c03813ae84b97413442a35b54
|
95
|
+
lib/appsignal/integrations/shoryuken.rb 58759e9c37e06b59c0f66cedf57d4e29564b13e9
|
96
|
+
lib/appsignal/rack/hanami_middleware.rb 547d5e6140d329f818a499ddefe56f30a9f03300
|
97
|
+
lib/appsignal/helpers/instrumentation.rb d9dd2be5ef1963e0372819dbb495bcd8abae7096
|
98
|
+
lib/appsignal/hooks/mongo_ruby_driver.rb 107ec60626d5088b69d2164472b0a4a2212d716b
|
99
|
+
lib/appsignal/integrations/webmachine.rb fe009df5c9a6a0ea6df6ded1c1fc3351b9169353
|
100
|
+
lib/appsignal/integrations/data_mapper.rb 9b1ea78f9ea9eb4ecd560482f5e51e98945f7ce8
|
101
|
+
lib/appsignal/integrations/dry_monitor.rb b80261d5f3e2d9eb78bd34916712bc2cb3441c12
|
102
|
+
lib/appsignal/rack/abstract_middleware.rb f71cc57cc6c94b0fe9886a569a057060cc23fdc4
|
103
|
+
lib/appsignal/utils/integration_logger.rb 7ecb02fa3de92139b38af9ea9607ae50e484d009
|
104
|
+
lib/appsignal/integrations/action_cable.rb 704524c87fe40928e147805e6f1b1eff68517d84
|
105
|
+
lib/appsignal/integrations/redis_client.rb c2aeebd51d0828ad00a199b85c6cc51dc33ced89
|
106
|
+
lib/appsignal/rack/rails_instrumentation.rb 59d8413b3ed1486781a32c9f3fba61f0d808e550
|
107
|
+
lib/appsignal/integrations/code_ownership.rb 235e5c309ea96ed0bd9521b144a3e8ad6f137b30
|
108
|
+
lib/appsignal/utils/sample_data_sanitizer.rb 061bff99244f75de00466291bb20e1944501cec0
|
109
|
+
lib/appsignal/rack/sinatra_instrumentation.rb 04bdaaefc0ad729f1a66457240f1487d90afed7c
|
110
|
+
lib/appsignal/utils/query_params_sanitizer.rb 5d718b4dd7934d8f910eb7832e5fbebf790d4b26
|
111
|
+
lib/sequel/extensions/appsignal_integration.rb 11afd6a09a188861382305572f6361261fec0803
|
112
|
+
lib/appsignal/integrations/mongo_ruby_driver.rb 13e213612656fd2f27be93a3df9936be9046660c
|
113
|
+
lib/appsignal/integrations/delayed_job_plugin.rb 4f7c561f5c135cf4bff4f8c9a7ca41fb98f811a8
|
114
|
+
lib/appsignal/rack/instrumentation_middleware.rb a9893e69b88a0e3f442fb369a80dc6a5805d4da1
|
115
|
+
lib/appsignal/utils/integration_memory_logger.rb 10f8f4b32d2e18d898cc1a6c69c955440d569d70
|
116
|
+
lib/appsignal/utils/stdout_and_logger_message.rb 7788e16c07e28f18779ad6ee61e33bea875ac4dc
|
117
|
+
lib/appsignal/event_formatter/rom/sql_formatter.rb c94b4d23863323babb58696a678572bda8b60f66
|
118
|
+
lib/appsignal/hooks/active_support_notifications.rb 7eaf6f838ced6a24931355a4e11e97319e6d8cec
|
119
|
+
lib/appsignal/event_formatter/sequel/sql_formatter.rb 69b9c037a80234d037923bdeb23fd53bd577c018
|
120
|
+
lib/appsignal/event_formatter/faraday/request_formatter.rb 93c62a8926468b70ba838a0863ed5e981e0165de
|
121
|
+
lib/appsignal/integrations/active_support_notifications.rb 54737fe5142bc2d8b25d22372a77eea030d72ba4
|
122
|
+
lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb 67f6c21a691d49738fbecc1cbf4ba466686b53f4
|
123
|
+
lib/appsignal/event_formatter/active_record/sql_formatter.rb 6a21fd648cf525b864af09a80229512a67b7e4dd
|
124
|
+
lib/appsignal/event_formatter/action_view/render_formatter.rb 7cf5e19b711e5300079c8ba40815dd5178d52ef7
|
125
|
+
lib/appsignal/event_formatter/elastic_search/search_formatter.rb a358ec7a5a2e3669a80cb65c13a7650d78097a31
|
126
|
+
lib/appsignal/event_formatter/view_component/render_formatter.rb 9cc8ef5855a193ea8c297203bcc13fa5942f26f2
|
127
|
+
lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb 1d357c7a51561349d475cd4b7217c73f9fa05099
|
128
|
+
lib/appsignal/event_formatter/active_record/instantiation_formatter.rb 255077b4c9fb4925e749449de5ab12713a8efb96
|
129
|
+
ext/base.rb 666e9305b03cf9e9867d336de83d1882cea61909
|
130
|
+
ext/agent.rb 3fc4e641fb5cf96ce6bd0b8e22e9666cbd1c844c
|
131
|
+
ext/extconf.rb 8c48bb9264d1b676ec225e1696dbea6c6e8f485d
|
132
|
+
ext/appsignal_extension.c 7b7099fdc4c05a5e03279debcbdb8702dd2553a1
|
data/.yardoc/complete
ADDED
File without changes
|
Binary file
|
Binary file
|
data/.yardoc/proxy_types
ADDED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,35 @@
|
|
1
1
|
# AppSignal for Ruby gem Changelog
|
2
2
|
|
3
|
+
## 4.7.1
|
4
|
+
|
5
|
+
_Published on 2025-09-19._
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- Add support for the [CodeOwnership](https://github.com/rubyatscale/code_ownership) gem, which allows engineering teams to declare ownership of specific parts of a codebase.
|
10
|
+
|
11
|
+
When an error is reported, the AppSignal gem will tag the transaction with the owner of the file that caused the error.
|
12
|
+
|
13
|
+
This feature is enabled by default. To disable it, set the [`instrument_code_ownership` configuration option](https://docs.appsignal.com/ruby/configuration/options.html#option-instrument_code_ownership) to `false`.
|
14
|
+
|
15
|
+
(patch [40860cb2](https://github.com/appsignal/appsignal-ruby/commit/40860cb2c64f9f0ff93dbba253514ddb06020a5f))
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
|
19
|
+
- Do not patch `Rack::Events` when using recent Rack versions. When using versions 3.2.1 and above,
|
20
|
+
which contain a fix for the bug where using `Rack::Events` breaks requests with streaming bodies,
|
21
|
+
use `Rack::Events` directly, instead of our patched subclass.
|
22
|
+
|
23
|
+
(patch [64f5b0ee](https://github.com/appsignal/appsignal-ruby/commit/64f5b0eebe07e6937a6397ab089d2b6bf1bd234d))
|
24
|
+
|
25
|
+
### Fixed
|
26
|
+
|
27
|
+
- Fix Rails version detection when only one of Rails's gems is present.
|
28
|
+
|
29
|
+
This prevents loading errors when non-Rails code defines a Rails constant without the full Rails framework.
|
30
|
+
|
31
|
+
(patch [f06952d9](https://github.com/appsignal/appsignal-ruby/commit/f06952d9ac095bb9c7455acd8ab563beb84d8433))
|
32
|
+
|
3
33
|
## 4.7.0
|
4
34
|
|
5
35
|
_Published on 2025-08-29._
|
data/build_matrix.yml
CHANGED
@@ -115,6 +115,7 @@ matrix:
|
|
115
115
|
- "rails-7.1"
|
116
116
|
- "rails-7.2"
|
117
117
|
- "rails-8.0"
|
118
|
+
- "rails-8.1"
|
118
119
|
|
119
120
|
ruby:
|
120
121
|
- ruby: "3.5.0-preview1"
|
@@ -130,6 +131,7 @@ matrix:
|
|
130
131
|
- gem: "no_dependencies"
|
131
132
|
- gem: "capistrano2"
|
132
133
|
- gem: "capistrano3"
|
134
|
+
- gem: "code_ownership"
|
133
135
|
- gem: "dry-monitor"
|
134
136
|
only:
|
135
137
|
ruby:
|
@@ -243,6 +245,13 @@ matrix:
|
|
243
245
|
- "3.4.1"
|
244
246
|
- "3.3.4"
|
245
247
|
- "3.2.5"
|
248
|
+
- gem: "rails-8.1"
|
249
|
+
only:
|
250
|
+
ruby:
|
251
|
+
- "3.5.0-preview1"
|
252
|
+
- "3.4.1"
|
253
|
+
- "3.3.4"
|
254
|
+
- "3.2.5"
|
246
255
|
- gem: "sequel"
|
247
256
|
- gem: "sinatra"
|
248
257
|
- gem: "webmachine2"
|
data/lib/appsignal/config.rb
CHANGED
@@ -112,6 +112,7 @@ module Appsignal
|
|
112
112
|
:ignore_errors => [],
|
113
113
|
:ignore_logs => [],
|
114
114
|
:ignore_namespaces => [],
|
115
|
+
:instrument_code_ownership => true,
|
115
116
|
:instrument_http_rb => true,
|
116
117
|
:instrument_net_http => true,
|
117
118
|
:instrument_ownership => true,
|
@@ -186,6 +187,7 @@ module Appsignal
|
|
186
187
|
:enable_rake_performance_instrumentation =>
|
187
188
|
"APPSIGNAL_ENABLE_RAKE_PERFORMANCE_INSTRUMENTATION",
|
188
189
|
:files_world_accessible => "APPSIGNAL_FILES_WORLD_ACCESSIBLE",
|
190
|
+
:instrument_code_ownership => "APPSIGNAL_INSTRUMENT_CODE_OWNERSHIP",
|
189
191
|
:instrument_http_rb => "APPSIGNAL_INSTRUMENT_HTTP_RB",
|
190
192
|
:instrument_net_http => "APPSIGNAL_INSTRUMENT_NET_HTTP",
|
191
193
|
:instrument_ownership => "APPSIGNAL_INSTRUMENT_OWNERSHIP",
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Appsignal
|
4
|
+
class Hooks
|
5
|
+
# @!visibility private
|
6
|
+
class CodeOwnershipHook < Appsignal::Hooks::Hook
|
7
|
+
register :code_ownership
|
8
|
+
|
9
|
+
def dependencies_present?
|
10
|
+
defined?(::CodeOwnership) &&
|
11
|
+
Gem::Specification.find_by_name("code_ownership").version < Gem::Version.new("2.0") &&
|
12
|
+
Appsignal.config && Appsignal.config[:instrument_code_ownership]
|
13
|
+
end
|
14
|
+
|
15
|
+
def install
|
16
|
+
require "appsignal/integrations/code_ownership"
|
17
|
+
|
18
|
+
Appsignal::Transaction.before_complete <<
|
19
|
+
Appsignal::Integrations::CodeOwnershipIntegration.method(:before_complete)
|
20
|
+
|
21
|
+
Appsignal::Environment.report_enabled("code_ownership")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/appsignal/hooks.rb
CHANGED
@@ -80,6 +80,7 @@ require "appsignal/hooks/action_mailer"
|
|
80
80
|
require "appsignal/hooks/active_job"
|
81
81
|
require "appsignal/hooks/active_support_notifications"
|
82
82
|
require "appsignal/hooks/celluloid"
|
83
|
+
require "appsignal/hooks/code_ownership"
|
83
84
|
require "appsignal/hooks/delayed_job"
|
84
85
|
require "appsignal/hooks/gvl"
|
85
86
|
require "appsignal/hooks/dry_monitor"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Appsignal
|
4
|
+
module Integrations
|
5
|
+
# @!visibility private
|
6
|
+
module CodeOwnershipIntegration
|
7
|
+
class << self
|
8
|
+
def before_complete(transaction, error)
|
9
|
+
team = ::CodeOwnership.for_backtrace(error.backtrace)
|
10
|
+
transaction.add_tags(:owner => team.name)
|
11
|
+
rescue => ex
|
12
|
+
logger = Appsignal.internal_logger
|
13
|
+
logger.error(
|
14
|
+
"Error while looking up CodeOwnership team: #{ex.class}: #{ex.message}\n" \
|
15
|
+
"#{ex.backtrace.join("\n")}"
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
rails_version = Rails.respond_to?(:version) ? Rails.version : "unknown"
|
4
|
+
Appsignal.internal_logger.debug("Loading Rails (#{rails_version}) integration")
|
4
5
|
|
5
6
|
require "appsignal/utils/rails_helper"
|
6
7
|
require "appsignal/rack/rails_instrumentation"
|
@@ -39,12 +39,12 @@ module Appsignal
|
|
39
39
|
|
40
40
|
# @api private
|
41
41
|
attr_reader :id
|
42
|
-
attr_writer :
|
42
|
+
attr_writer :using_appsignal_event_middleware
|
43
43
|
|
44
44
|
# @api private
|
45
45
|
def initialize
|
46
46
|
@id = SecureRandom.uuid
|
47
|
-
@
|
47
|
+
@using_appsignal_event_middleware = false
|
48
48
|
end
|
49
49
|
|
50
50
|
# @api private
|
@@ -159,7 +159,7 @@ module Appsignal
|
|
159
159
|
end
|
160
160
|
|
161
161
|
def emit_warning_once
|
162
|
-
return if @
|
162
|
+
return if @using_appsignal_event_middleware
|
163
163
|
|
164
164
|
Appsignal.internal_logger.warn <<~MSG
|
165
165
|
Rack::Events is not compatible with streaming bodies. Using `Appsignal::Rack::EventHandler`#{" "}
|
@@ -168,7 +168,7 @@ module Appsignal
|
|
168
168
|
with streaming bodies.#{" "}
|
169
169
|
See https://docs.appsignal.com/ruby/integrations/rack.html for more information.
|
170
170
|
MSG
|
171
|
-
@
|
171
|
+
@using_appsignal_event_middleware = true
|
172
172
|
end
|
173
173
|
end
|
174
174
|
end
|
@@ -2,11 +2,19 @@
|
|
2
2
|
|
3
3
|
module Appsignal
|
4
4
|
module Rack
|
5
|
+
# @api private
|
6
|
+
def self.rack_3_2_1_or_newer?
|
7
|
+
return false unless ::Rack.respond_to?(:release)
|
8
|
+
|
9
|
+
Gem::Version.new(::Rack.release) >= Gem::Version.new("3.2.1")
|
10
|
+
end
|
11
|
+
|
5
12
|
# Modified version of the {::Rack::Events} instrumentation
|
6
13
|
# middleware.
|
7
14
|
#
|
8
15
|
# We recommend using this instead of {::Rack::Events}, as it
|
9
|
-
# is compatible with streaming bodies
|
16
|
+
# is compatible with streaming bodies when using Rack versions
|
17
|
+
# before 3.2.0.
|
10
18
|
#
|
11
19
|
# We do not recommend using this middleware directly, instead
|
12
20
|
# recommending the use of {EventMiddleware}, which is a
|
@@ -15,64 +23,57 @@ module Appsignal
|
|
15
23
|
#
|
16
24
|
# See the original implementation at:
|
17
25
|
# https://github.com/rack/rack/blob/8d3d7857fcd9e5df057a6c22458bab35b3a19c12/lib/rack/events.rb
|
18
|
-
class Events < ::Rack::Events
|
19
|
-
# A stub for {::Rack::Events::EventedBodyProxy}. It
|
20
|
-
# allows the same initialization arguments, but
|
21
|
-
# otherwise behaves identically to {::Rack::BodyProxy}.
|
22
|
-
#
|
23
|
-
# It does not implement `#each`, fixing an issue
|
24
|
-
# where the evented body proxy would break
|
25
|
-
# streaming responses by always responding to `#each`
|
26
|
-
# even if the proxied body did not implement it.
|
27
|
-
#
|
28
|
-
# Because it ignores the handlers passed to it and
|
29
|
-
# behaves like a normal body proxy, the `on_send`
|
30
|
-
# event on the handlers is never called.
|
31
|
-
class EventedBodyProxy < ::Rack::BodyProxy
|
32
|
-
def initialize(body, _request, _response, _handlers, &block)
|
33
|
-
super(body, &block)
|
34
|
-
end
|
35
|
-
end
|
36
26
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
27
|
+
if rack_3_2_1_or_newer?
|
28
|
+
Events = ::Rack::Events
|
29
|
+
else
|
30
|
+
class Events < ::Rack::Events
|
31
|
+
# A stub for {::Rack::Events::EventedBodyProxy}. It
|
32
|
+
# allows the same initialization arguments, but
|
33
|
+
# otherwise behaves identically to {::Rack::BodyProxy}.
|
34
|
+
#
|
35
|
+
# It does not implement `#each`, fixing an issue
|
36
|
+
# where the evented body proxy would break
|
37
|
+
# streaming responses by always responding to `#each`
|
38
|
+
# even if the proxied body did not implement it.
|
39
|
+
#
|
40
|
+
# Because it ignores the handlers passed to it and
|
41
|
+
# behaves like a normal body proxy, the `on_send`
|
42
|
+
# event on the handlers is never called.
|
43
|
+
class EventedBodyProxy < ::Rack::BodyProxy
|
44
|
+
def initialize(body, _request, _response, _handlers, &block)
|
45
|
+
super(body, &block)
|
45
46
|
end
|
46
47
|
end
|
47
|
-
end
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
49
|
+
# The `call` method, exactly as implemented by {::Rack::Events},
|
50
|
+
# but redefined here so that it uses our {EventedBodyProxy}
|
51
|
+
# instead of the original {::Rack::Events::EventedBodyProxy}.
|
52
|
+
#
|
53
|
+
# This fixes streaming bodies, but it also means that the
|
54
|
+
# `on_send` event on the handlers is never called.
|
55
|
+
#
|
56
|
+
# See the original implementation at:
|
57
|
+
# https://github.com/rack/rack/blob/8d3d7857fcd9e5df057a6c22458bab35b3a19c12/lib/rack/events.rb#L111-L129
|
58
|
+
def call(env)
|
59
|
+
request = make_request env
|
60
|
+
on_start request, nil
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
62
|
+
begin
|
63
|
+
status, headers, body = @app.call request.env
|
64
|
+
response = make_response status, headers, body
|
65
|
+
on_commit request, response
|
66
|
+
rescue StandardError => e
|
67
|
+
on_error request, response, e
|
68
|
+
on_finish request, response
|
69
|
+
raise
|
70
|
+
end
|
71
71
|
|
72
|
-
|
73
|
-
|
72
|
+
body = EventedBodyProxy.new(body, request, response, @handlers) do
|
73
|
+
on_finish request, response
|
74
|
+
end
|
75
|
+
[response.status, response.headers, body]
|
74
76
|
end
|
75
|
-
[response.status, response.headers, body]
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
@@ -104,7 +105,9 @@ module Appsignal
|
|
104
105
|
# @api public
|
105
106
|
class EventMiddleware < Events
|
106
107
|
def initialize(app)
|
107
|
-
super(app, [Appsignal::Rack::EventHandler.new
|
108
|
+
super(app, [Appsignal::Rack::EventHandler.new.tap do |handler|
|
109
|
+
handler.using_appsignal_event_middleware = true
|
110
|
+
end])
|
108
111
|
end
|
109
112
|
end
|
110
113
|
end
|
data/lib/appsignal/version.rb
CHANGED
data/lib/appsignal.rb
CHANGED
@@ -644,7 +644,7 @@ require "appsignal/rack/abstract_middleware"
|
|
644
644
|
require "appsignal/rack/instrumentation_middleware"
|
645
645
|
require "appsignal/rack/event_handler"
|
646
646
|
require "appsignal/rack/event_middleware"
|
647
|
-
require "appsignal/integrations/railtie" if defined?(::Rails)
|
647
|
+
require "appsignal/integrations/railtie" if defined?(::Rails::Railtie)
|
648
648
|
require "appsignal/transaction"
|
649
649
|
require "appsignal/version"
|
650
650
|
require "appsignal/transmitter"
|
data/sig/appsignal.rbi
CHANGED
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appsignal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.7.
|
4
|
+
version: 4.7.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Robert Beekman
|
8
8
|
- Thijs Cadier
|
9
9
|
- Tom de Bruijn
|
10
|
-
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: logger
|
@@ -175,6 +174,11 @@ extensions:
|
|
175
174
|
- ext/Rakefile
|
176
175
|
extra_rdoc_files: []
|
177
176
|
files:
|
177
|
+
- ".yardoc/checksums"
|
178
|
+
- ".yardoc/complete"
|
179
|
+
- ".yardoc/object_types"
|
180
|
+
- ".yardoc/objects/root.dat"
|
181
|
+
- ".yardoc/proxy_types"
|
178
182
|
- CHANGELOG.md
|
179
183
|
- CLAUDE.md
|
180
184
|
- CODE_OF_CONDUCT.md
|
@@ -231,6 +235,7 @@ files:
|
|
231
235
|
- lib/appsignal/hooks/active_support_notifications.rb
|
232
236
|
- lib/appsignal/hooks/at_exit.rb
|
233
237
|
- lib/appsignal/hooks/celluloid.rb
|
238
|
+
- lib/appsignal/hooks/code_ownership.rb
|
234
239
|
- lib/appsignal/hooks/data_mapper.rb
|
235
240
|
- lib/appsignal/hooks/delayed_job.rb
|
236
241
|
- lib/appsignal/hooks/dry_monitor.rb
|
@@ -257,6 +262,7 @@ files:
|
|
257
262
|
- lib/appsignal/integrations/active_support_notifications.rb
|
258
263
|
- lib/appsignal/integrations/capistrano/appsignal.cap
|
259
264
|
- lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
|
265
|
+
- lib/appsignal/integrations/code_ownership.rb
|
260
266
|
- lib/appsignal/integrations/data_mapper.rb
|
261
267
|
- lib/appsignal/integrations/delayed_job_plugin.rb
|
262
268
|
- lib/appsignal/integrations/dry_monitor.rb
|
@@ -333,7 +339,6 @@ metadata:
|
|
333
339
|
documentation_uri: https://docs.appsignal.com/ruby/
|
334
340
|
homepage_uri: https://docs.appsignal.com/ruby/
|
335
341
|
source_code_uri: https://github.com/appsignal/appsignal-ruby
|
336
|
-
post_install_message:
|
337
342
|
rdoc_options: []
|
338
343
|
require_paths:
|
339
344
|
- lib
|
@@ -349,8 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
349
354
|
- !ruby/object:Gem::Version
|
350
355
|
version: '0'
|
351
356
|
requirements: []
|
352
|
-
rubygems_version: 3.
|
353
|
-
signing_key:
|
357
|
+
rubygems_version: 3.6.9
|
354
358
|
specification_version: 4
|
355
359
|
summary: Logs performance and exception data from your app to appsignal.com
|
356
360
|
test_files: []
|