diff options
Diffstat (limited to 'lib/gitlab/utils/strong_memoize.rb')
-rw-r--r-- | lib/gitlab/utils/strong_memoize.rb | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/gitlab/utils/strong_memoize.rb b/lib/gitlab/utils/strong_memoize.rb index 6456ad08924..7e78363dae5 100644 --- a/lib/gitlab/utils/strong_memoize.rb +++ b/lib/gitlab/utils/strong_memoize.rb @@ -16,16 +16,6 @@ module Gitlab # include Gitlab::Utils::StrongMemoize # # def trigger_from_token - # strong_memoize(:trigger) do - # Ci::Trigger.find_by_token(params[:token].to_s) - # end - # end - # - # Or like: - # - # include Gitlab::Utils::StrongMemoize - # - # def trigger_from_token # Ci::Trigger.find_by_token(params[:token].to_s) # end # strong_memoize_attr :trigger_from_token @@ -99,6 +89,15 @@ module Gitlab def do_strong_memoize(klass, method_name, member_name) method = klass.instance_method(method_name) + unless method.arity == 0 + raise <<~ERROR + Using `strong_memoize_attr` on methods with parameters is not supported. + + Use `strong_memoize_with` instead. + See https://docs.gitlab.com/ee/development/utilities.html#strongmemoize + ERROR + end + # Methods defined within a class method are already public by default, so we don't need to # explicitly make them public. scope = %i[private protected].find do |scope| @@ -106,9 +105,9 @@ module Gitlab .include? method_name end - klass.define_method(method_name) do |*args, &block| + klass.define_method(method_name) do |&block| strong_memoize(member_name) do - method.bind_call(self, *args, &block) + method.bind_call(self, &block) end end |