Skip to content

Commit e153db3

Browse files
committed
Wrap WeakRefs in object with custom #inspect
1 parent 2b89154 commit e153db3

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

lib/nanoc/base/memoization.rb

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ module Nanoc::Int
88
# @since 3.2.0
99
module Memoization
1010
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+
end
22+
end
23+
24+
class Value
1125
attr_reader :value
1226

1327
def initialize(value)
@@ -63,15 +77,15 @@ def memoize(method_name)
6377
if method_cache.key?(args)
6478
value =
6579
begin
66-
method_cache[args].value
80+
method_cache[args].ref.value
6781
rescue WeakRef::RefError
6882
NONE
6983
end
7084
end
7185

7286
if value.equal?(NONE)
7387
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)))
7589
end
7690
else
7791
value

0 commit comments

Comments
 (0)