1. ホーム
  2. ruby-on-rails

[解決済み] RubyやRailsで独自のエラータイプを定義するには?

2022-04-26 08:16:41

質問

Rubyライブラリ(gem)またはRuby on Railsアプリケーションでカスタムエラータイプを定義するためのベストプラクティスはありますか?具体的には

  1. プロジェクトの構造的にどこに属するか?別のファイルで、関連するモジュールやクラスの定義と一緒にインライン化され、どこか他の場所にあるのでしょうか?
  2. を定義する規約はありますか? から とは にあらず は新しいエラータイプを作成しますか?

ライブラリによってやり方が違うので、本当の意味でのパターンには気づいていません。あるライブラリは常にカスタムエラータイプを使用し、他のライブラリは全く使用しません。あるライブラリはすべてのエラーがStandardErrorを拡張し、他のライブラリはネストした階層を持ちます。

それと、これらをquot;エラータイプと呼ぶと曖昧になるような気がするので、どういう意味かというと、次のようなことです。

class AuthenticationError < StandardError; end
class InvalidUsername < AuthenticationError; end

解決方法は?

ジェム用

このように例外を定義しているのを何度も見たことがあります。

gem_dir/lib/gem_name/exceptions.rb

と定義されています。

module GemName

  class AuthenticationError < StandardError; end
  class InvalidUsername < AuthenticationError; end

end

には、このような例があります。 HTTPパーティ

Ruby on Railsの場合

lib/フォルダのexceptions.rbというファイルの下に置き、以下のようにします。

module Exceptions
  class AuthenticationError < StandardError; end
  class InvalidUsername < AuthenticationError; end
end

で、このように使うことになります。

raise Exceptions::InvalidUsername