Как же я раньше не догадался:

run_long_something() # long_something длится пять часов

run_long_something do | progress |
  puts "#{progress}% готово" # гораздо лучше
end