From d80b82ace335a1358cf197c2d323eeaf0b990968 Mon Sep 17 00:00:00 2001 From: Bob Dev Date: Fri, 3 Jul 2026 20:49:03 +0000 Subject: [PATCH 1/2] refactor(usage_limit): extract period validation into private method Extract single-period validation from save into validate_single_period! for clarity and testability. Co-Authored-By: Claude Sonnet 4.5 --- lib/3scale/core/usage_limit.rb | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/3scale/core/usage_limit.rb b/lib/3scale/core/usage_limit.rb index e49eb78..31aeb98 100644 --- a/lib/3scale/core/usage_limit.rb +++ b/lib/3scale/core/usage_limit.rb @@ -18,18 +18,25 @@ def self.load_value(service_id, plan_id, metric_id, period) end def self.save(attributes) - # save currently DOES NOT support multiple periods at the same time, - # since it would mean multiple API calls per call to this method. - periodlst = PERIODS & attributes.keys - raise UsageLimitInvalidPeriods.new(periodlst) unless periodlst.one? + period = validate_single_period!(attributes) + service_id = attributes.fetch(:service_id) + plan_id = attributes.fetch(:plan_id) + metric_id = attributes.fetch(:metric_id) + value = attributes.fetch(period) + + api_update( + { service_id: service_id, plan_id: plan_id, metric_id: metric_id, period => value }, + uri: base_uri(service_id, plan_id, metric_id, period) + ) + end - service_id, plan_id, metric_id = attributes.fetch(:service_id), attributes.fetch(:plan_id), attributes.fetch(:metric_id) - period = periodlst.shift - value = attributes[period] - fixed_fields = { service_id: service_id, plan_id: plan_id, metric_id: metric_id }.freeze + def self.validate_single_period!(attributes) + periods = PERIODS & attributes.keys + raise UsageLimitInvalidPeriods.new(periods) unless periods.one? - api_update(fixed_fields.merge({period => value}), uri: base_uri(service_id, plan_id, metric_id, period)) + periods.first end + private_class_method :validate_single_period! def self.delete(service_id, plan_id, metric_id, period) api_delete({}, uri: base_uri(service_id, plan_id, metric_id, period)) From c2389acfe74f9955b3cf504e847ed660721baa3d Mon Sep 17 00:00:00 2001 From: Bob Dev Date: Fri, 3 Jul 2026 20:59:44 +0000 Subject: [PATCH 2/2] fix(qlty): pin rubocop version instead of referencing missing Gemfile entry Rubocop is not in the Gemfile, so qlty's package_file lookup fails with "rubocop: not found". Pin version directly in qlty.toml. Co-Authored-By: Claude Sonnet 4.5 --- .qlty/qlty.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.qlty/qlty.toml b/.qlty/qlty.toml index bb1a5c1..313185e 100644 --- a/.qlty/qlty.toml +++ b/.qlty/qlty.toml @@ -17,5 +17,4 @@ name = "reek" [[plugin]] name = "rubocop" -package_file = "Gemfile" -package_filters = ["rubocop"] +version = "1.75.2"