push
travis-ci
32 of 32 new or added lines in 4 files covered. (100.0%)
1706 of 1820 relevant lines covered (93.74%)
233070.82 hits per line
1 |
# frozen_string_literal: true
|
|
2 |
|
|
|
require "weakref"
|
14✔ |
4 |
|
|
|
module Roo |
14✔ |
|
module Helpers |
14✔ |
|
module WeakInstanceCache |
14✔ |
|
private |
14✔ |
9 |
|
|
|
def instance_cache(key) |
14✔ |
|
object = nil
|
8,239✔ |
12 |
|
|
|
if (ref = instance_variable_get(key)) && ref.weakref_alive?
|
8,239✔ |
14 |
begin
|
3,561✔ |
|
object = ref.__getobj__ |
4,155✔ |
16 |
rescue => e
|
|
|
unless (defined?(::WeakRef::RefError) && e.is_a?(::WeakRef::RefError)) || (defined?(RefError) && e.is_a?(RefError)) |
× |
|
raise e |
× |
19 |
end
|
|
20 |
end
|
|
21 |
end
|
|
22 |
|
|
|
unless object
|
8,239✔ |
|
object = yield
|
4,084✔ |
|
instance_variable_set(key, WeakRef.new(object))
|
4,084✔ |
26 |
end
|
|
27 |
|
|
|
object |
8,239✔ |
29 |
end
|
|
30 |
end
|
|
31 |
end
|
|
32 |
end
|