summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2018-06-05 12:11:58 +0000
committerNick Thomas <nick@gitlab.com>2018-06-05 12:11:58 +0000
commit049519e718d84f06af1510d2236a0819372fea56 (patch)
tree181abf8901e8be013f0bc8fcda1c5f1ddbaf53e5 /lib
parent636d70381e3f5b2fe983127ece216e9bb6a07bb1 (diff)
parentf71fc9328c42bb67c0ad209dd6503de57fa2bcf8 (diff)
downloadgitlab-ce-049519e718d84f06af1510d2236a0819372fea56.tar.gz
Merge branch 'override-consider-extend' into 'master'
Also verify if extending would override a class method See merge request gitlab-org/gitlab-ce!19377
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/utils/override.rb16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/gitlab/utils/override.rb b/lib/gitlab/utils/override.rb
index 8bf6bcb1fe2..7b2a62fed48 100644
--- a/lib/gitlab/utils/override.rb
+++ b/lib/gitlab/utils/override.rb
@@ -87,18 +87,28 @@ module Gitlab
end
def included(base = nil)
- return super if base.nil? # Rails concern, ignoring it
+ super
+
+ queue_verification(base)
+ end
+ alias_method :prepended, :included
+
+ def extended(mod)
super
+ queue_verification(mod.singleton_class)
+ end
+
+ def queue_verification(base)
+ return unless ENV['STATIC_VERIFICATION']
+
if base.is_a?(Class) # We could check for Class in `override`
# This could be `nil` if `override` was never called
Override.extensions[self]&.add_class(base)
end
end
- alias_method :prepended, :included
-
def self.extensions
@extensions ||= {}
end