自分用メモ。
日本語で検索しても情報が出てこなかったので
ちょっと調べてみた。
調べ方としてはGithubのコード検索で「< StandardError」で検索して
出てきたコードがどのディレクトリに配置されているのかで調査。
10件〜15件ぐらい見た感じだと、大体が
「lib」ディレクトリ内に入れる。
※(中でerrorsなどのサブディレクトリ内に分けているケースも含む)
他には「app」ディレクトリ内に「exceptions」っていうディレクトリを作って入れてるケースなどもあった。
調べている最中で以下のようなStackOverflowも引っかかった。
Where to define custom error types in Ruby and/or Rails? - Stack Overflow
色々とやり方があるみたい。。
自分は以下の方針で行こうと思う。
1)「lib内」案
他のアプリでも再利用できるExceptionの場合はlib以下に入れる。
アプリの規模が大きい場合はサブディレクトリを別途作成し、その中で管理する。
2)「app/exceptions内」案
あくまでもそのアプリ内でのみ使用すると想定される独自Exceptionの場合はapp/exceptions以下に入れる。
アプリの規模が大きい場合はサブディレクトリを別途作成し、その中で管理する。
例)「lib内」案の例
lib/exceptions.rbを作成
module Exceptions class AuthenticationError < StandardError; end class InvalidUsername < AuthenticationError; end end
config/applications.rbに以下を追加
config.autoload_paths += Dir["#{config.root}/lib/**/"]
使用
raise Exceptions::InvalidUsername