10
8

More than 3 years have passed since last update.

rails consoleで例外発生時のエラーメッセージが文字化けする場合の対処方法

Last updated at Posted at 2021-08-27

発生する問題

rails consoleで例外が発生し、そのエラーメッセージに日本語が含まれていた場合、"\xE3\x83\x90\xE3..."みたいな形で日本語が文字化けする。

たとえば以下は本来であれば「バリデーションに失敗しました: Eメールを入力してください」というエラーメッセージを表示すべき場合に文字化けする例である。

> User.create!
/(railsのパス)/validations.rb:80:in `raise_validation_error': \xE3\x83\x90\xE3...(省略) (ActiveRecord::RecordInvalid)

原因

rails consoleで使われているirbのバージョンが1.3.5以下だとこの問題が発生する。

rails consoleで使用されているirbのバージョンを確認する場合は、rails console上でirb_infoと入力する。

> irb_info
=> 
Ruby version: 3.0.0
IRB version: irb 1.3.0 (2020-12-25)
InputMethod: ReidlineInputMethod with Reline 0.2.0

対処方法

Gemfileにirbを追加して、bundle installを実行する。(なぜ追加したのか、コメントを残しておくと良い)

Gemfile
# rails consoleの文字化けを解消する
gem 'irb', '>= 1.3.6'

rails consoleを起動し、irbのバージョンが1.3.6以上になっていることを確認する。

> irb_info
=> 
Ruby version: 3.0.0
IRB version: irb 1.3.7 (2021-08-12)
InputMethod: ReidlineInputMethod with Reline 0.2.7
RUBY_PLATFORM: arm64-darwin20

これで例外メッセージが文字化けせずに表示されるはず。

> User.create!
/(railsのパス)/validations.rb:80:in `raise_validation_error': バリデーションに失敗しました: Eメールを入力してください (ActiveRecord::RecordInvalid)
10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8