Оказывается, в ruby 1.8.7 появилась ошибка, из-за которой финализаторы больше не гарантированно работают.
Для решения этой проблемы я добавил следующий фрагмент кода в свой файл .irbrc:
require 'irb/ext/save-history'
Kernel.at_exit do
IRB::HistorySavingAbility.create_finalizer.call(IRB.CurrentContext.instance_variable_get(:@io).send(:binding))
end