We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 2b89154 commit e153db3Copy full SHA for e153db3
1 file changed
lib/nanoc/base/memoization.rb
@@ -8,6 +8,20 @@ module Nanoc::Int
8
# @since 3.2.0
9
module Memoization
10
class Wrapper
11
+ attr_reader :ref
12
+
13
+ def initialize(ref)
14
+ @ref = ref
15
+ end
16
17
+ def inspect
18
+ @ref.inspect
19
+ rescue WeakRef::RefError
20
+ '<weak ref collected>'
21
22
23
24
+ class Value
25
attr_reader :value
26
27
def initialize(value)
@@ -63,15 +77,15 @@ def memoize(method_name)
63
77
if method_cache.key?(args)
64
78
value =
65
79
begin
66
- method_cache[args].value
80
+ method_cache[args].ref.value
67
81
rescue WeakRef::RefError
68
82
NONE
69
83
end
70
84
71
85
72
86
if value.equal?(NONE)
73
87
send(original_method_name, *args).tap do |r|
74
- method_cache[args] = WeakRef.new(Wrapper.new(r))
88
+ method_cache[args] = Wrapper.new(WeakRef.new(Value.new(r)))
75
89
76
90
else
91
value
0 commit comments