From 9b7244d07dfecfb5ba0b2e7af414df8c8be83bc5 Mon Sep 17 00:00:00 2001
From: Michael Grosser <michael@grosser.it>
Date: Fri, 6 Nov 2015 19:33:12 -0800
Subject: dry up increment/decrement

---
 .../lib/active_support/cache/memory_store.rb       | 35 ++++++++++------------
 1 file changed, 15 insertions(+), 20 deletions(-)

(limited to 'activesupport')

diff --git a/activesupport/lib/active_support/cache/memory_store.rb b/activesupport/lib/active_support/cache/memory_store.rb
index 90bb2c38c3..896c28ad8b 100644
--- a/activesupport/lib/active_support/cache/memory_store.rb
+++ b/activesupport/lib/active_support/cache/memory_store.rb
@@ -75,30 +75,12 @@ module ActiveSupport
 
       # Increment an integer value in the cache.
       def increment(name, amount = 1, options = nil)
-        synchronize do
-          options = merged_options(options)
-          if num = read(name, options)
-            num = num.to_i + amount
-            write(name, num, options)
-            num
-          else
-            nil
-          end
-        end
+        modify_value(name, amount, options)
       end
 
       # Decrement an integer value in the cache.
       def decrement(name, amount = 1, options = nil)
-        synchronize do
-          options = merged_options(options)
-          if num = read(name, options)
-            num = num.to_i - amount
-            write(name, num, options)
-            num
-          else
-            nil
-          end
-        end
+        modify_value(name, -amount, options)
       end
 
       def delete_matched(matcher, options = nil)
@@ -167,6 +149,19 @@ module ActiveSupport
             !!entry
           end
         end
+
+      private
+
+        def modify_value(name, amount, options)
+          synchronize do
+            options = merged_options(options)
+            if num = read(name, options)
+              num = num.to_i + amount
+              write(name, num, options)
+              num
+            end
+          end
+        end
     end
   end
 end
-- 
cgit v1.2.3