Я записал свое собственное промежуточное программное обеспечение для обеспечения конечной точки API нашему приложению. Промежуточное программное обеспечение загружает классы, которые предоставляют методы API, и направляет запрос к соответствующему классу/методу. Классы загружаются динамично через String#constantize
.
При выполнении в режиме разработки классы автоматически перезагружаются. Однако, если существует неперехваченное исключение – который впоследствии обрабатывается Отказоустойчивым промежуточным программным обеспечением – автоматическая перезагрузка прекращает работать. constantize
все еще называется, но это, кажется, возвращает старый класс.
Казалось бы, что существует что-то еще, что разгружает классы, и неперехваченное исключение повреждает его. Каково это могло быть?
Рабочий Ruby 1.8.7, направляющие 2.3.3 и тонкие 1.2.2.