According to the description, the operator ||= will assign values only once, but it looks like it does it every time and we have an infinite loop. (using Ruby 2.6.6p146)
loop do
fib ||= [0,1]
p fib
i = fib[-1] + fib[-2]
break if i >= 100
fib << i
p fib
end
# [0, 1]
# [0, 1, 1]
# [0, 1]
# [0, 1, 1]
# [0, 1]
# [0, 1, 1]
# ...