Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyで例外にコンテキストデータを追加する方法

標準のバックトレース/エラーメッセージの組み合わせでは不十分な場合があります。エラーの原因を特定するために、追加のデータが必要になる場合があります。幸い、Rubyで行うのはとても簡単です。

エラーメッセージのカスタマイズ

エラーにコンテキスト情報を追加する最も簡単な方法は、それを例外のメッセージに追加することです。以下の例では、例外をキャッチし、新しいメッセージで再発生させています:

begin
  raise "foo"
rescue => e
  raise e.class, "bar"
end

# RuntimeError: bar

このアプローチの良い使用例は、テンプレートをレンダリングする場合です。テンプレート内で発生する例外は、テンプレートのファイル名を認識していません。ただし、これはデバッグ時に知っておくべき非常に重要な情報です。

テンプレートエラーをレスキューし、メッセージの前にファイル名を追加する方法の例を次に示します。

filename = "mytemplate.erb"
template = File.read(filename) # Contains "<% 1/0 %>"

e = ERB.new(template) 

begin
  e.result
rescue => e
  raise e.class, [filename, e.message].join(": ")
end

# ZeroDivisionError: mytemplate.erb: divided by 0
例外のラッピング

例外にコンテキスト情報を含めるための別のオプションは、カスタム例外を作成することです。例外はRubyの他のすべてのクラスと同じであるため、必要な数のattr_accessorsを追加できます。

これがどのように見えるかです:

TemplateError < StandardError
  attr_reader :filename

  def initialize(msg, filename)
    @filename = filename
    super(msg)
  end
end

begin
  ERB.new(template).result
rescue => e
  raise TemplateError.new(e.message, filename)
end

Honeybadgerのコンテキスト機能の使用

はいはい。 Honeybadgerには、例外にコンテキスト情報を追加するための非常に巧妙な方法があるため、これを挿入する必要がありました。例外オブジェクトを変更する代わりに、アプリケーションのどこからでもHoneybadger.contextメソッドを使用するだけです。

class ApplicationController

  ....

  def find_current_user
    user = ...
    Honeybadger.context(user_id: user.id, user_email: user.email, user.scope: "user")
  end

end

例外が発生すると、コンテキストデータが一緒に報告されます。その後、ウェブまたはモバイルアプリで他の例外データと一緒にデータを表示できます。

Rubyで例外にコンテキストデータを追加する方法 Honeybadgerのコンテキスト機能を使用すると、必要な情報を多くのコードなしで例外に添付できます。>


  1. Windows 11 で透明なコンテキスト メニューを追加する方法

    Windows 11 について無視できないことが 1 つあるとすれば、それはデザインとユーザー インターフェイスの明らかな進歩です。 Windows 11 では、新しいイテレーションの多くの新機能の中で、コンテキスト メニューを透明にする方法も提供しています。 この記事では、Windows 11 に透明なコンテキスト メニューを追加する方法を順を追って説明します。では、始めましょう。 Windows 11 で透明なコンテキスト メニューを追加する方法 初心者のために説明すると、Windows のコンテキスト メニューは、マウスを右クリックしたときに表示されるグラフィカル ユーザー インター

  2. Windows 11 で透明なコンテキスト メニューを追加する方法

    Windows 11 について無視できないことが 1 つあるとすれば、それはデザインとユーザー インターフェイスの明らかな進歩です。 Windows 11 では、新しいイテレーションの多くの新機能の中で、コンテキスト メニューを透明にする方法も提供しています。 この記事では、Windows 11 に透明なコンテキスト メニューを追加する方法を順を追って説明します。では、始めましょう。 Windows 11 で透明なコンテキスト メニューを追加する方法 初心者のために説明すると、Windows のコンテキスト メニューは、マウスを右クリックしたときに表示されるグラフィカル ユーザー インター