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
例外が発生すると、コンテキストデータが一緒に報告されます。その後、ウェブまたはモバイルアプリで他の例外データと一緒にデータを表示できます。
Honeybadgerのコンテキスト機能を使用すると、必要な情報を多くのコードなしで例外に添付できます。>
-
Windows 11 で透明なコンテキスト メニューを追加する方法
Windows 11 について無視できないことが 1 つあるとすれば、それはデザインとユーザー インターフェイスの明らかな進歩です。 Windows 11 では、新しいイテレーションの多くの新機能の中で、コンテキスト メニューを透明にする方法も提供しています。 この記事では、Windows 11 に透明なコンテキスト メニューを追加する方法を順を追って説明します。では、始めましょう。 Windows 11 で透明なコンテキスト メニューを追加する方法 初心者のために説明すると、Windows のコンテキスト メニューは、マウスを右クリックしたときに表示されるグラフィカル ユーザー インター
-
Windows 11 で透明なコンテキスト メニューを追加する方法
Windows 11 について無視できないことが 1 つあるとすれば、それはデザインとユーザー インターフェイスの明らかな進歩です。 Windows 11 では、新しいイテレーションの多くの新機能の中で、コンテキスト メニューを透明にする方法も提供しています。 この記事では、Windows 11 に透明なコンテキスト メニューを追加する方法を順を追って説明します。では、始めましょう。 Windows 11 で透明なコンテキスト メニューを追加する方法 初心者のために説明すると、Windows のコンテキスト メニューは、マウスを右クリックしたときに表示されるグラフィカル ユーザー インター