From e65e0b21184015952164327fd276f5d7da72d53c Mon Sep 17 00:00:00 2001 From: Zach Hale Date: Tue, 15 Apr 2014 17:20:42 -0700 Subject: [PATCH 1/3] Raise AlreadyMemoizedError on dobule-memoization instead of an ArgumentError --- lib/memoist.rb | 4 +++- test/memoist_test.rb | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/memoist.rb b/lib/memoist.rb index ffbcab6..e938b6d 100644 --- a/lib/memoist.rb +++ b/lib/memoist.rb @@ -96,7 +96,7 @@ def memoize(*method_names) include InstanceMethods if method_defined?(unmemoized_method) - raise "Already memoized #{method_name}" + raise AlreadyMemoizedError.new("Already memoized #{method_name}") end alias_method unmemoized_method, method_name @@ -194,4 +194,6 @@ def #{method_name}(*args) end end end + + class AlreadyMemoizedError < StandardError; end end diff --git a/test/memoist_test.rb b/test/memoist_test.rb index ccad6a2..2e9af04 100644 --- a/test/memoist_test.rb +++ b/test/memoist_test.rb @@ -289,15 +289,15 @@ def test_object_memoized_module_methods end def test_double_memoization - assert_raise(RuntimeError) { Person.memoize :name } + assert_raise(Memoist::AlreadyMemoizedError) { Person.memoize :name } person = Person.new person.extend Memoist - assert_raise(RuntimeError) { person.memoize :name } + assert_raise(Memoist::AlreadyMemoizedError) { person.memoize :name } company = Company.new company.extend Memoist company.memoize :name - assert_raise(RuntimeError) { company.memoize :name } + assert_raise(Memoist::AlreadyMemoizedError) { company.memoize :name } end def test_double_memoization_with_identifier From e04cd2716f87e6324274f1f8f9733ecdee1cffcb Mon Sep 17 00:00:00 2001 From: Zach Hale Date: Wed, 16 Apr 2014 10:24:02 -0700 Subject: [PATCH 2/3] AlreadyMemoizedError should inherit from RuntimeError --- lib/memoist.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/memoist.rb b/lib/memoist.rb index e938b6d..3d48b7e 100644 --- a/lib/memoist.rb +++ b/lib/memoist.rb @@ -195,5 +195,5 @@ def #{method_name}(*args) end end - class AlreadyMemoizedError < StandardError; end + class AlreadyMemoizedError < RuntimeError; end end From 44cfee073fa1dd69b0c88856dc8bd977c72acfe7 Mon Sep 17 00:00:00 2001 From: Zach Hale Date: Wed, 16 Apr 2014 10:32:00 -0700 Subject: [PATCH 3/3] Remove missing file from gemspec --- memoist.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memoist.gemspec b/memoist.gemspec index ce42aac..17d925a 100644 --- a/memoist.gemspec +++ b/memoist.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.date = "2013-07-19" s.email = ["josh@joshpeek.com", "tarmo@itech.ee", "jeremy@bitsweat.net", "libc@mac.com", "fxn@hashref.com", "niels@herimedia.co", "wycats@gmail.com", "jeem@hughesorama.com", "john.pignata@gmail.com", "42@dmathieu.com", "jose.valim@gmail.com"] s.extra_rdoc_files = ["README.md"] - s.files = ["README.md", "test/benchmark/memoist_benchmark.rb", "test/memoist_test.rb", "test/test_helper.rb", "lib/memoist/core_ext/singleton_class.rb", "lib/memoist.rb"] + s.files = ["README.md", "test/memoist_test.rb", "test/test_helper.rb", "lib/memoist/core_ext/singleton_class.rb", "lib/memoist.rb"] s.homepage = "https://github.com/matthewrudy/memoist" s.licenses = ["MIT"] s.rdoc_options = ["--main", "README.md"]