# Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details. # frozen_string_literal: true module Contrast module Framework module Rails module Rewrite # Used to monkey patch all the inherited calls in action_pack # # This is the usual entry point for Rails inheritance work, so it should # catch most of the calls to inherited. # TODO: RUBY-714 remove w/ EOL of 2.5 # @deprecated Changes to this class are discouraged as this approach is # being phased out with support for those language versions. module ActionControllerRailtiesHelperInherited def self.instrument @_instrument ||= begin ::ActionController::Railties::Helpers.class_eval do alias_method :cs__patched_helper_inherited, :inherited def inherited klass # rubocop:disable Lint/MissingSuper klass&.instance_variable_set(:@cs__defining_class, true) cs__patched_helper_inherited(klass) # This calls the original inherited, which should handle super as needed. ensure klass&.instance_variable_set(:@cs__defining_class, false) end end true end end end end end end end