Techioz Blog

Rails 例外の短いエラー メッセージ

概要

次のようなエラーを救出しています

ここでの @stream は基本的に生の PDF データ全体を保存しているため、エラー メッセージが非常に長くなります。このエラー メッセージをレコードに保存する必要がありますが、メッセージを数文字に切り詰めるのではなく、より短い方法でこれを行う良い方法はありますか?

数百文字のみに切り詰めてみましたが、より良い方法を探しています。

解決策

エラー メッセージをより効果的に処理するには、メッセージを単に切り捨てるのではなく、メッセージの最も関連性の高い部分を抽出することに重点を置くことができます。これを達成するための段階的なアプローチは次のとおりです。

このアプローチの例を次に示します。

begin
  # Code that might raise an error
rescue => e
  error_message = e.message

  # Use regex to remove the raw PDF data part (assuming @stream is what you want to remove)
  # The regex @stream="[^"]*" targets the @stream part of the error message and replaces it with [REDACTED]
  cleaned_message = error_message.gsub(/@stream="[^"]*"/, '@stream="[REDACTED]"')

  # Optionally, further reduce the size by truncating if needed
  summary_message = cleaned_message.truncate(300) # Adjust the length as needed

  # Save the cleaned and shortened error message to a record
  ErrorLog.create(message: summary_message)

  # Also log the complete error message for debugging purposes
  Rails.logger.error(e.full_message)

  # Or save the complete error message to a detailed error log
  DetailedErrorLog.create(message: e.full_message)
end