Когда я порождаю поток с Thread.new {}, он похож на любое исключение, которое происходит в том потоке, никогда не выходит в свет, и приложение просто бесшумно игнорирует его
Обычно потоки изолированы друг от друга, поэтому исключение в одном из них не приведет к завершению работы всего приложения.
Но, хотя я никогда не использовал их, в классе Thread
есть несколько методов abort_on_exception
, даже с некоторыми примерами. Они должны делать то, что вы хотите.
http://corelib.rubyonrails.org/classes/Thread.html
Добавляя к ответу Никиты, вы также можете вызвать исключение, вызвав thread.join
на сгенерированном вами потоке.
Если вы запускаете программу с включенным флагом отладки (ruby -d
), то вы также прерветесь, когда в потоке возникнет необработанное исключение.