diff options
Diffstat (limited to 'config/initializers/0_log_deprecations.rb')
-rw-r--r-- | config/initializers/0_log_deprecations.rb | 19 |
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') |