researchable_loggable 1.7.1 → 1.8.0

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.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +257 -238
  5. data/README.md +17 -0
  6. data/lib/loggable/pyroscope_config.rb +57 -0
  7. data/lib/loggable/railtie.rb +6 -0
  8. data/lib/loggable/version.rb +1 -1
  9. data/lib/researchable_loggable.rb +1 -0
  10. data/node_modules/semantic-release-rubygem/src/__tests__/fixtures/valid/lib/test-gem/version.rb +1 -1
  11. data/vendor/ruby/ruby/3.2.0/gems/concurrent-ruby-1.2.0/lib/concurrent-ruby/concurrent/version.rb +1 -1
  12. data/vendor/ruby/ruby/3.2.0/gems/crass-1.0.6/lib/crass/version.rb +1 -1
  13. data/vendor/ruby/ruby/3.2.0/gems/lograge-0.12.0/lib/lograge/version.rb +1 -1
  14. data/vendor/ruby/ruby/3.2.0/gems/method_source-1.0.0/lib/method_source/version.rb +1 -1
  15. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-api-1.3.0/lib/opentelemetry/version.rb +1 -1
  16. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-common-0.21.0/lib/opentelemetry/common/version.rb +1 -1
  17. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-exporter-otlp-0.28.1/lib/opentelemetry/exporter/otlp/version.rb +1 -1
  18. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-helpers-mysql-0.1.1/lib/opentelemetry/helpers/mysql/version.rb +1 -1
  19. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-helpers-sql-obfuscation-0.2.0/lib/opentelemetry/helpers/sql_obfuscation/version.rb +1 -1
  20. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-action_mailer-0.1.0/lib/opentelemetry/instrumentation/action_mailer/version.rb +1 -1
  21. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-action_pack-0.9.0/lib/opentelemetry/instrumentation/action_pack/version.rb +1 -1
  22. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-action_view-0.7.3/lib/opentelemetry/instrumentation/action_view/version.rb +1 -1
  23. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_job-0.7.7/lib/opentelemetry/instrumentation/active_job/version.rb +1 -1
  24. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_model_serializers-0.20.2/lib/opentelemetry/instrumentation/active_model_serializers/version.rb +1 -1
  25. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_record-0.7.4/lib/opentelemetry/instrumentation/active_record/version.rb +1 -1
  26. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_support-0.6.0/lib/opentelemetry/instrumentation/active_support/version.rb +1 -1
  27. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-all-0.63.0/lib/opentelemetry/instrumentation/all/version.rb +1 -1
  28. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-aws_lambda-0.1.1/lib/opentelemetry/instrumentation/aws_lambda/version.rb +1 -1
  29. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-aws_sdk-0.5.4/lib/opentelemetry/instrumentation/aws_sdk/version.rb +1 -1
  30. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-base-0.22.6/lib/opentelemetry/instrumentation/version.rb +1 -1
  31. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-bunny-0.21.4/lib/opentelemetry/instrumentation/bunny/version.rb +1 -1
  32. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-concurrent_ruby-0.21.4/lib/opentelemetry/instrumentation/concurrent_ruby/version.rb +1 -1
  33. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-dalli-0.25.4/lib/opentelemetry/instrumentation/dalli/version.rb +1 -1
  34. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-delayed_job-0.22.4/lib/opentelemetry/instrumentation/delayed_job/version.rb +1 -1
  35. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-ethon-0.21.8/lib/opentelemetry/instrumentation/ethon/version.rb +1 -1
  36. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-excon-0.22.4/lib/opentelemetry/instrumentation/excon/version.rb +1 -1
  37. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-faraday-0.24.6/lib/opentelemetry/instrumentation/faraday/version.rb +1 -1
  38. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-grape-0.2.0/lib/opentelemetry/instrumentation/grape/version.rb +1 -1
  39. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-graphql-0.28.4/lib/opentelemetry/instrumentation/graphql/version.rb +1 -1
  40. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-gruf-0.2.1/lib/opentelemetry/instrumentation/gruf/version.rb +1 -1
  41. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-http-0.23.4/lib/opentelemetry/instrumentation/http/version.rb +1 -1
  42. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-http_client-0.22.7/lib/opentelemetry/instrumentation/http_client/version.rb +1 -1
  43. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-koala-0.20.5/lib/opentelemetry/instrumentation/koala/version.rb +1 -1
  44. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-lmdb-0.22.3/lib/opentelemetry/instrumentation/lmdb/version.rb +1 -1
  45. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-mongo-0.22.4/lib/opentelemetry/instrumentation/mongo/version.rb +1 -1
  46. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-mysql2-0.27.2/lib/opentelemetry/instrumentation/mysql2/version.rb +1 -1
  47. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-net_http-0.22.7/lib/opentelemetry/instrumentation/net/http/version.rb +1 -1
  48. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-pg-0.28.0/lib/opentelemetry/instrumentation/pg/version.rb +1 -1
  49. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-que-0.8.4/lib/opentelemetry/instrumentation/que/version.rb +1 -1
  50. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-racecar-0.3.4/lib/opentelemetry/instrumentation/racecar/version.rb +1 -1
  51. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rack-0.24.6/lib/opentelemetry/instrumentation/rack/version.rb +1 -1
  52. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rails-0.31.2/lib/opentelemetry/instrumentation/rails/version.rb +1 -1
  53. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rake-0.2.2/lib/opentelemetry/instrumentation/rake/version.rb +1 -1
  54. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rdkafka-0.4.8/lib/opentelemetry/instrumentation/rdkafka/version.rb +1 -1
  55. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-redis-0.25.7/lib/opentelemetry/instrumentation/redis/version.rb +1 -1
  56. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-resque-0.5.2/lib/opentelemetry/instrumentation/resque/version.rb +1 -1
  57. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-restclient-0.22.7/lib/opentelemetry/instrumentation/restclient/version.rb +1 -1
  58. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-ruby_kafka-0.21.3/lib/opentelemetry/instrumentation/ruby_kafka/version.rb +1 -1
  59. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-sidekiq-0.25.7/lib/opentelemetry/instrumentation/sidekiq/version.rb +1 -1
  60. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-sinatra-0.24.1/lib/opentelemetry/instrumentation/sinatra/version.rb +1 -1
  61. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-trilogy-0.59.3/lib/opentelemetry/instrumentation/trilogy/version.rb +1 -1
  62. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-registry-0.3.1/lib/opentelemetry/instrumentation/registry/version.rb +1 -1
  63. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-sdk-1.5.0/lib/opentelemetry/sdk/version.rb +1 -1
  64. data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-semantic_conventions-1.10.1/lib/opentelemetry/semantic_conventions/version.rb +1 -1
  65. data/vendor/ruby/ruby/3.2.0/gems/rack-test-2.0.2/lib/rack/test/version.rb +1 -1
  66. data/vendor/ruby/ruby/3.2.0/gems/regexp_parser-2.7.0/lib/regexp_parser/version.rb +1 -1
  67. data/vendor/ruby/ruby/3.2.0/gems/ruboguide-1.0.0/lib/ruboguide/version.rb +1 -1
  68. data/vendor/ruby/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/version.rb +1 -1
  69. data/vendor/ruby/ruby/3.2.0/gems/tzinfo-2.0.6/lib/tzinfo/version.rb +1 -1
  70. data/vendor/ruby/ruby/3.4.0/gems/concurrent-ruby-1.2.0/lib/concurrent-ruby/concurrent/version.rb +1 -1
  71. data/vendor/ruby/ruby/3.4.0/gems/crass-1.0.6/lib/crass/version.rb +1 -1
  72. data/vendor/ruby/ruby/3.4.0/gems/lograge-0.12.0/lib/lograge/version.rb +1 -1
  73. data/vendor/ruby/ruby/3.4.0/gems/method_source-1.0.0/lib/method_source/version.rb +1 -1
  74. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-api-1.3.0/lib/opentelemetry/version.rb +1 -1
  75. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-common-0.21.0/lib/opentelemetry/common/version.rb +1 -1
  76. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-exporter-otlp-0.28.1/lib/opentelemetry/exporter/otlp/version.rb +1 -1
  77. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-helpers-mysql-0.1.1/lib/opentelemetry/helpers/mysql/version.rb +1 -1
  78. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-helpers-sql-obfuscation-0.2.0/lib/opentelemetry/helpers/sql_obfuscation/version.rb +1 -1
  79. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-action_mailer-0.1.0/lib/opentelemetry/instrumentation/action_mailer/version.rb +1 -1
  80. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-action_pack-0.9.0/lib/opentelemetry/instrumentation/action_pack/version.rb +1 -1
  81. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-action_view-0.7.3/lib/opentelemetry/instrumentation/action_view/version.rb +1 -1
  82. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_job-0.7.7/lib/opentelemetry/instrumentation/active_job/version.rb +1 -1
  83. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_model_serializers-0.20.2/lib/opentelemetry/instrumentation/active_model_serializers/version.rb +1 -1
  84. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_record-0.7.4/lib/opentelemetry/instrumentation/active_record/version.rb +1 -1
  85. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_support-0.6.0/lib/opentelemetry/instrumentation/active_support/version.rb +1 -1
  86. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-all-0.63.0/lib/opentelemetry/instrumentation/all/version.rb +1 -1
  87. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-aws_lambda-0.1.1/lib/opentelemetry/instrumentation/aws_lambda/version.rb +1 -1
  88. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-aws_sdk-0.5.4/lib/opentelemetry/instrumentation/aws_sdk/version.rb +1 -1
  89. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-base-0.22.6/lib/opentelemetry/instrumentation/version.rb +1 -1
  90. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-bunny-0.21.4/lib/opentelemetry/instrumentation/bunny/version.rb +1 -1
  91. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-concurrent_ruby-0.21.4/lib/opentelemetry/instrumentation/concurrent_ruby/version.rb +1 -1
  92. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-dalli-0.25.4/lib/opentelemetry/instrumentation/dalli/version.rb +1 -1
  93. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-delayed_job-0.22.4/lib/opentelemetry/instrumentation/delayed_job/version.rb +1 -1
  94. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-ethon-0.21.8/lib/opentelemetry/instrumentation/ethon/version.rb +1 -1
  95. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-excon-0.22.4/lib/opentelemetry/instrumentation/excon/version.rb +1 -1
  96. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-faraday-0.24.6/lib/opentelemetry/instrumentation/faraday/version.rb +1 -1
  97. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-grape-0.2.0/lib/opentelemetry/instrumentation/grape/version.rb +1 -1
  98. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-graphql-0.28.4/lib/opentelemetry/instrumentation/graphql/version.rb +1 -1
  99. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-gruf-0.2.1/lib/opentelemetry/instrumentation/gruf/version.rb +1 -1
  100. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-http-0.23.4/lib/opentelemetry/instrumentation/http/version.rb +1 -1
  101. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-http_client-0.22.7/lib/opentelemetry/instrumentation/http_client/version.rb +1 -1
  102. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-koala-0.20.5/lib/opentelemetry/instrumentation/koala/version.rb +1 -1
  103. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-lmdb-0.22.3/lib/opentelemetry/instrumentation/lmdb/version.rb +1 -1
  104. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-mongo-0.22.4/lib/opentelemetry/instrumentation/mongo/version.rb +1 -1
  105. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-mysql2-0.27.2/lib/opentelemetry/instrumentation/mysql2/version.rb +1 -1
  106. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-net_http-0.22.7/lib/opentelemetry/instrumentation/net/http/version.rb +1 -1
  107. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-pg-0.28.0/lib/opentelemetry/instrumentation/pg/version.rb +1 -1
  108. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-que-0.8.4/lib/opentelemetry/instrumentation/que/version.rb +1 -1
  109. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-racecar-0.3.4/lib/opentelemetry/instrumentation/racecar/version.rb +1 -1
  110. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rack-0.24.6/lib/opentelemetry/instrumentation/rack/version.rb +1 -1
  111. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rails-0.31.2/lib/opentelemetry/instrumentation/rails/version.rb +1 -1
  112. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rake-0.2.2/lib/opentelemetry/instrumentation/rake/version.rb +1 -1
  113. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rdkafka-0.4.8/lib/opentelemetry/instrumentation/rdkafka/version.rb +1 -1
  114. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-redis-0.25.7/lib/opentelemetry/instrumentation/redis/version.rb +1 -1
  115. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-resque-0.5.2/lib/opentelemetry/instrumentation/resque/version.rb +1 -1
  116. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-restclient-0.22.7/lib/opentelemetry/instrumentation/restclient/version.rb +1 -1
  117. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-ruby_kafka-0.21.3/lib/opentelemetry/instrumentation/ruby_kafka/version.rb +1 -1
  118. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-sidekiq-0.25.7/lib/opentelemetry/instrumentation/sidekiq/version.rb +1 -1
  119. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-sinatra-0.24.1/lib/opentelemetry/instrumentation/sinatra/version.rb +1 -1
  120. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-trilogy-0.59.3/lib/opentelemetry/instrumentation/trilogy/version.rb +1 -1
  121. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-registry-0.3.1/lib/opentelemetry/instrumentation/registry/version.rb +1 -1
  122. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-sdk-1.5.0/lib/opentelemetry/sdk/version.rb +1 -1
  123. data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-semantic_conventions-1.10.1/lib/opentelemetry/semantic_conventions/version.rb +1 -1
  124. data/vendor/ruby/ruby/3.4.0/gems/rack-test-2.0.2/lib/rack/test/version.rb +1 -1
  125. data/vendor/ruby/ruby/3.4.0/gems/regexp_parser-2.7.0/lib/regexp_parser/version.rb +1 -1
  126. data/vendor/ruby/ruby/3.4.0/gems/ruboguide-1.0.0/lib/ruboguide/version.rb +1 -1
  127. data/vendor/ruby/ruby/3.4.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/version.rb +1 -1
  128. data/vendor/ruby/ruby/3.4.0/gems/tzinfo-2.0.6/lib/tzinfo/version.rb +1 -1
  129. metadata +7 -9
data/README.md CHANGED
@@ -97,6 +97,23 @@ This method is used for ECS logging, if the method is not found, the user.id fie
97
97
  config.loggable.disable_open_telemetry = true
98
98
  ```
99
99
 
100
+ `disable_pyroscope`. Loggable can configure [Pyroscope](https://grafana.com/docs/pyroscope/) for continuous profiling in production. The `pyroscope` gem is optional, so it is not installed with loggable (it has no prebuilt binaries for Alpine/musl). To enable profiling, add it to your Gemfile:
101
+
102
+ ```ruby
103
+ gem 'pyroscope', '~> 1.0'
104
+ ```
105
+
106
+ The configuration is the same regardless of the backend it points to (Grafana Cloud, a self-hosted Pyroscope or an Alloy instance):
107
+
108
+ - `PYROSCOPE_SERVER_ADDRESS` (required): the address of the backend (e.g. `https://profiles-prod-001.grafana.net` or `http://localhost:4040`).
109
+ - `PYROSCOPE_BASIC_AUTH_USER` and `PYROSCOPE_BASIC_AUTH_PASSWORD` (optional): basic auth credentials, used when both are set.
110
+
111
+ If `PYROSCOPE_SERVER_ADDRESS` is not present, Pyroscope configuration is skipped entirely. If you want to disable profiling regardless, you may add the following to your `config/application.rb` file:
112
+
113
+ ```ruby
114
+ config.loggable.disable_pyroscope = true
115
+ ```
116
+
100
117
  No other configuration options are provided because this gem seeks to enforce consistency across all applications.
101
118
 
102
119
  For applications that already had some level of log customization, some cleanup might be needed:
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+ require 'socket'
5
+
6
+ module Loggable
7
+ # The PyroscopeConfig module provides a method to configure Pyroscope for continuous profiling.
8
+ # The same env vars are used regardless of the backend (Grafana Cloud, a self-hosted Pyroscope or Alloy instance):
9
+ # - PYROSCOPE_SERVER_ADDRESS (required)
10
+ # - PYROSCOPE_BASIC_AUTH_USER and PYROSCOPE_BASIC_AUTH_PASSWORD (optional, enables basic auth when both are set)
11
+ # If PYROSCOPE_SERVER_ADDRESS is not present, Pyroscope configuration is skipped.
12
+ # The pyroscope gem is optional: applications that want profiling must add it to their own Gemfile.
13
+ module PyroscopeConfig
14
+ def self.configure(application_name)
15
+ server_address = env('PYROSCOPE_SERVER_ADDRESS')
16
+ return unless server_address && pyroscope_available?
17
+
18
+ ::Pyroscope.configure do |config|
19
+ config.application_name = application_name
20
+ config.server_address = server_address
21
+ configure_basic_auth(config)
22
+ config.tags = {
23
+ 'pod' => env('HOSTNAME') || Socket.gethostname,
24
+ 'domain' => env('HOST_NAME')
25
+ }.compact
26
+ end
27
+ end
28
+
29
+ def self.pyroscope_available?
30
+ require 'pyroscope'
31
+ true
32
+ rescue LoadError
33
+ warn 'Loggable: PYROSCOPE_SERVER_ADDRESS is set but the pyroscope gem is not installed, skipping Pyroscope'
34
+ false
35
+ end
36
+ private_class_method :pyroscope_available?
37
+
38
+ def self.configure_basic_auth(config)
39
+ username = env('PYROSCOPE_BASIC_AUTH_USER')
40
+ password = env('PYROSCOPE_BASIC_AUTH_PASSWORD')
41
+ if username.nil? ^ password.nil?
42
+ warn 'Loggable: PYROSCOPE_BASIC_AUTH_USER and PYROSCOPE_BASIC_AUTH_PASSWORD must both be set, ' \
43
+ 'skipping basic auth'
44
+ end
45
+ return unless username && password
46
+
47
+ config.basic_auth_username = username
48
+ config.basic_auth_password = password
49
+ end
50
+ private_class_method :configure_basic_auth
51
+
52
+ def self.env(name)
53
+ ENV.fetch(name, nil).presence
54
+ end
55
+ private_class_method :env
56
+ end
57
+ end
@@ -11,6 +11,7 @@ module Loggable
11
11
  config.loggable = ActiveSupport::OrderedOptions.new
12
12
  config.loggable.production_like = false
13
13
  config.loggable.current_user_method = :current_user
14
+ config.loggable.disable_pyroscope = false
14
15
 
15
16
  # Initializer runs before initialize_logger (found in Bootstrap) so from the very beginning we are logging using
16
17
  # the logfmt format, even during the initialization process
@@ -19,6 +20,7 @@ module Loggable
19
20
  Rails.application.configure do
20
21
  production_like = Rails.env.production? || config.loggable.production_like
21
22
  disable_open_telemetry = config.loggable.disable_open_telemetry
23
+ disable_pyroscope = config.loggable.disable_pyroscope
22
24
 
23
25
  if production_like
24
26
  if Rails.application.config.respond_to?(:assets) && Rails.application.config.assets.quiet
@@ -30,6 +32,10 @@ module Loggable
30
32
  unless disable_open_telemetry
31
33
  Loggable::OpenTelemetryConfig.configure(Rails.application.class.module_parent_name.underscore.dasherize)
32
34
  end
35
+
36
+ unless disable_pyroscope
37
+ Loggable::PyroscopeConfig.configure(Rails.application.class.module_parent_name.underscore.dasherize)
38
+ end
33
39
  end
34
40
 
35
41
  # lograge configuration
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Loggable
4
- VERSION = '1.7.1'
4
+ VERSION = '1.8.0'
5
5
  end
@@ -3,6 +3,7 @@
3
3
  require_relative 'loggable/version'
4
4
  require_relative 'loggable/railtie' if defined?(Rails::Railtie)
5
5
  require_relative 'loggable/opentelemetry_config'
6
+ require_relative 'loggable/pyroscope_config'
6
7
  require_relative 'loggable/logfmt/logger'
7
8
 
8
9
  module ResearchableLoggable
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TestGem
4
- VERSION = '1.7.1'
4
+ VERSION = '1.8.0'
5
5
  end
@@ -1,3 +1,3 @@
1
1
  module Concurrent
2
- VERSION = '1.7.1'
2
+ VERSION = '1.8.0'
3
3
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Crass
4
- VERSION = '1.7.1'
4
+ VERSION = '1.8.0'
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lograge
4
- VERSION = '1.7.1'
4
+ VERSION = '1.8.0'
5
5
  end
@@ -1,3 +1,3 @@
1
1
  module MethodSource
2
- VERSION = '1.7.1'.freeze
2
+ VERSION = '1.8.0'.freeze
3
3
  end
@@ -6,5 +6,5 @@
6
6
 
7
7
  module OpenTelemetry
8
8
  ## Current OpenTelemetry version
9
- VERSION = '1.7.1'
9
+ VERSION = '1.8.0'
10
10
  end
@@ -6,6 +6,6 @@
6
6
 
7
7
  module OpenTelemetry
8
8
  module Common
9
- VERSION = '1.7.1'
9
+ VERSION = '1.8.0'
10
10
  end
11
11
  end
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '1.7.1'
11
+ VERSION = '1.8.0'
12
12
  end
13
13
  end
14
14
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Helpers
9
9
  module MySQL
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Helpers
9
9
  module SqlObfuscation
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActionMailer
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActionPack
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActionView
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActiveJob
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActiveModelSerializers
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActiveRecord
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActiveSupport
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module All
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module AwsLambda
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module AwsSdk
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -6,6 +6,6 @@
6
6
 
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
- VERSION = '1.7.1'
9
+ VERSION = '1.8.0'
10
10
  end
11
11
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Bunny
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ConcurrentRuby
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Dalli
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module DelayedJob
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Ethon
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Excon
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Faraday
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Grape
10
10
  # Current gem version
11
- VERSION = '1.7.1'
11
+ VERSION = '1.8.0'
12
12
  end
13
13
  end
14
14
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module GraphQL
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Gruf
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module HTTP
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module HttpClient
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Koala
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module LMDB
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Mongo
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Mysql2
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Net
10
10
  module HTTP
11
- VERSION = '1.7.1'
11
+ VERSION = '1.8.0'
12
12
  end
13
13
  end
14
14
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module PG
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Que
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Racecar
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Rack
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Rails
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Rake
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Rdkafka
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Redis
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Resque
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module RestClient
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module RubyKafka
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Sidekiq
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Sinatra
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Trilogy
10
- VERSION = '1.7.1'
10
+ VERSION = '1.8.0'
11
11
  end
12
12
  end
13
13
  end