проблема в том, что приложение не должно закончиь своё выполнение до того как на него пришлется сигнал
Тут без наличия в самом приложении возможности «зависнуть» никак (например, ожидание ввода пользователя); в случае Руби, конечно, можно попробовать извне пропатчить (чтобы в коде приложения не было чего-то, что нужно только для тестов).