From e267ac8c7ce0bd3e49f3ebc47487195682c86c59 Mon Sep 17 00:00:00 2001 From: Erik Michaels-Ober Date: Thu, 19 Dec 2013 09:03:57 -0500 Subject: [PATCH] Use Hash for Memoizable::Memory instead of ThreadSafe::Cache --- lib/memoizable.rb | 3 --- lib/memoizable/memory.rb | 15 +++++---------- memoizable.gemspec | 2 -- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/lib/memoizable.rb b/lib/memoizable.rb index 375e179c..f6eb9486 100644 --- a/lib/memoizable.rb +++ b/lib/memoizable.rb @@ -1,8 +1,5 @@ # encoding: utf-8 -require 'monitor' -require 'thread_safe' - require 'memoizable/instance_methods' require 'memoizable/method_builder' require 'memoizable/module_methods' diff --git a/lib/memoizable/memory.rb b/lib/memoizable/memory.rb index 3765006f..2c9ec36e 100644 --- a/lib/memoizable/memory.rb +++ b/lib/memoizable/memory.rb @@ -11,8 +11,7 @@ class Memory # # @api private def initialize - @memory = ThreadSafe::Cache.new - @monitor = Monitor.new + @memory = Hash.new freeze end @@ -39,9 +38,9 @@ def [](name) # @api public def []=(name, value) memoized = true - @memory.compute_if_absent(name) do + @memory.fetch(name) do memoized = false - value + @memory[name] = value end fail ArgumentError, "The method #{name} is already memoized" if memoized end @@ -55,12 +54,8 @@ def []=(name, value) # # @api public def fetch(name) - @memory.fetch(name) do # check for the key - @monitor.synchronize do # acquire a lock if the key is not found - @memory.fetch(name) do # recheck under lock - self[name] = yield # set the value - end - end + @memory.fetch(name) do + self[name] = yield end end diff --git a/memoizable.gemspec b/memoizable.gemspec index f73a3627..59cc5523 100644 --- a/memoizable.gemspec +++ b/memoizable.gemspec @@ -18,7 +18,5 @@ Gem::Specification.new do |gem| gem.test_files = Dir.glob('spec/{unit,integration}/**/*.rb') gem.extra_rdoc_files = Dir.glob('**/*.md') - gem.add_runtime_dependency('thread_safe', '~> 0.1.3') - gem.add_development_dependency('bundler', '~> 1.3', '>= 1.3.5') end