Что такое обычное место для хранения пользовательских определений исключений в проекте rails?

При создании собственных пользовательских исключений, таких как

class ThingExploded < StandardError; end
class ThingIsMissing < StandardError; end

Где хорошее место для хранения? Я рассматривал lib/exceptions.rb... и также размышлял, было бы более уместно каким-то образом приблизиться к коду, который их использует.

Ответ 1

Я иду с app/models/model_name/exceptions.rb, сохраняя их внутри модуля.

Ответ 2

Я бы, вероятно, пошел с lib/exceptions/thing_exploded.rb, чтобы сохранить каждый класс в отдельном файле.

Ответ 3

Если ваши исключения не настолько серьезны, их нельзя освобождать, а подклассификация их из Exception не подходит.

Исключения, такие как fatal и NoMemoryError, являются подклассами Exception, поэтому, если у вас есть код, например rescue Exception для обработки ThingExploded и ThingIsMissing, вы будете спасать всевозможные вещи, которые лучше всего остался один.

Лучше подклассифицировать их вместо StandardError.