summaryrefslogtreecommitdiff
path: root/config/initializers/0_log_deprecations.rb
diff options
context:
space:
mode:
Diffstat (limited to 'config/initializers/0_log_deprecations.rb')
-rw-r--r--config/initializers/0_log_deprecations.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/config/initializers/0_log_deprecations.rb b/config/initializers/0_log_deprecations.rb
index 6ba18ea1136..b3ef391053e 100644
--- a/config/initializers/0_log_deprecations.rb
+++ b/config/initializers/0_log_deprecations.rb
@@ -6,6 +6,18 @@ def log_deprecations?
via_env_var.nil? ? Rails.env.development? : via_env_var
end
+# Add `:notify` behavior only if not already added.
+#
+# See https://github.com/Shopify/deprecation_toolkit/blob/1d0e6f5b99785806f715ce2e9a13dc50f453d1e1/lib/deprecation_toolkit.rb#L21
+def add_notify_behavior
+ notify = ActiveSupport::Deprecation::DEFAULT_BEHAVIORS.fetch(:notify)
+ behaviors = ActiveSupport::Deprecation.behavior
+
+ return if behaviors.find { |behavior| behavior == notify }
+
+ ActiveSupport::Deprecation.behavior = behaviors << notify
+end
+
if log_deprecations?
# Log deprecation warnings emitted through Kernel#warn, such as from gems or
# the Ruby VM.
@@ -19,6 +31,13 @@ if log_deprecations?
Warning.process('', actions)
+ # We may have silenced deprecations warnings in 00_deprecations.rb on production.
+ # Unsilence them again.
+ ActiveSupport::Deprecation.silenced = false
+
+ # If we want to consume emitted warnings from Rails we need to attach a notifier first.
+ add_notify_behavior
+
# Log deprecation warnings emitted from Rails (see ActiveSupport::Deprecation).
ActiveSupport::Notifications.subscribe('deprecation.rails') do |name, start, finish, id, payload|
Gitlab::DeprecationJsonLogger.info(message: payload[:message].strip, source: 'rails')