From b0f142a94bdab30039a0332a44cc38976e231c2a Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Mon, 11 May 2015 17:38:40 +0200 Subject: [PATCH] v3: drastically reduce objects allocated by access control --- lib/travis/api/v3/access_control/generic.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/travis/api/v3/access_control/generic.rb b/lib/travis/api/v3/access_control/generic.rb index 0e09e409..2ed00476 100644 --- a/lib/travis/api/v3/access_control/generic.rb +++ b/lib/travis/api/v3/access_control/generic.rb @@ -8,11 +8,11 @@ module Travis::API::V3 end def visible?(object) - full_access? or dispatch(object) + full_access? or dispatch(object, :visible?) end def writable?(object) - full_access? or dispatch(object) + full_access? or dispatch(object, :writable?) end def admin_for(repository) @@ -82,7 +82,7 @@ module Travis::API::V3 private - def dispatch(object, method = caller_locations.first.base_label) + def dispatch(object, method) method = method_for(object.class, method) send(method, object) if respond_to?(method, true) end @@ -98,7 +98,8 @@ module Travis::API::V3 end def method_for(type, method) - @@method_for_cache[[type, method]] ||= "#{normailze_type(type)}_#{method}" + type_cache = @@method_for_cache[type] ||= {} + type_cache[method] ||= "#{normailze_type(type)}_#{method}" end def normailze_type(type)