Почему active_record нарушает поведение ловушки Ruby и как мне ее обойти?
В последние пару дней я пытался найти решение проблемы active_record, которая мучила меня. Посты на railsforum и stackru оказались полностью сухими. Длина и уровень детализации в этих постах, возможно, отговорили комментаторов, поэтому я попробую еще раз - вкратце.
Под окнами поведение ловушек является нормальным в моих сценариях - пока я не "требую 'active_record'", после чего ловушки перестают функционировать должным образом. Они вообще не работают, и это оставляет мою базу данных в беспорядке.
Рассматриваемый сценарий взаимодействует с другими сценариями в других системах посредством активной записи. Когда пользователь нажимает control-c или сценарий завершается по какой-либо другой причине, очень важно, чтобы сценарий уведомил базу данных о его (сценарии) неминуемой гибели до его выхода. С ловушкой из строя я застрял.
Есть ли обходной путь? Если вы заинтересованы в тестовом коде, смотрите мои связанные посты. Проблема может быть воспроизведена всего за несколько строк.
Спасибо...
1 ответ
Рассматривали ли вы обновление Ruby на платформе Windows? Я сделал несколько тестов с вашим примером кода и получил следующие результаты:
- Ruby 1.8.6-p36, Gem 1.3.2, ActiveRecord 2.2.2: FAILS
- Ruby 1.8.7-p72, Gem 1.3.1, ActiveRecord 2.1.0: РАБОТАЕТ
- Ruby 1.8.7-p72, Gem 1.3.2, ActiveRecord 2.2.2: РАБОТАЕТ
- Ruby 1.9.1-p0, Gem 1.3.1, ActiveRecord 2.3.2: иногда работает