Я думаю, что жалуется, потому что вы могли бы использовать next в случае, если tasks_done
включает текущую задачу из блока, а в противном случае переместите эту задачу в массив tasks_done:
tasks_running.each do |task|
if task[:done]
next if tasks_done.include?(task)
tasks_done << task
end
end
В вашем случае следующее выражение всегда вычисляется, поскольку оно является последним выражением в блоке, оно делает все, что должно, и просто продолжает итерацию, как если бы его там не было.
tasks_running.each do |task|
if task[:done] # If true
unless tasks_done.include?(task) # If true
tasks_done << task # Do this
next # And jump to the next element
end
end
end