diff --git a/lib/memonic.rb b/lib/memonic.rb index 04e9523..7057fce 100644 --- a/lib/memonic.rb +++ b/lib/memonic.rb @@ -19,18 +19,10 @@ def memoize(variable, &block) module ClassMethods def memoize(name, &block) - define_method("__#{name}__", &block) - class_eval <<-RUBY - def #{name} - @#{name} || begin - if defined?(@#{name}) - @#{name} - else - @#{name} = __#{name}__ - end - end - end - RUBY + define_method(name) do + singleton_class.send(:attr_reader, name.to_sym) + instance_variable_set("@#{name}", instance_exec(&block)) + end end end end