Rails consoleでは日本語入力ができない
例えばRailsアプリケーションで、新しいユーザーとして「織田信長」を開発環境で作成したいとする
$ rails c
irb(main):001:0> User.new(name: "織田信長")
irb(main):002:0> User.save
これで作成できるだろうと思ったのだが、何もしていないとrails c
では日本語が文字化けしてしまい、日本語入力ができない。
調べてみた
いろんな記事を見てみたのだが、結局はrubyがreadline
を参照してくれれば、ちゃんと日本語を認識してくれるらしい。
参考記事:
https://qiita.com/irohiroki/items/c82657b5cb4bdb2aaac4
こちらの記事を参考に直そうと思ったのだが、思ったより簡単にできてしまったのでご紹介しようと思う。
実際の手順
Rubyをアンインストール
自分のrubyのversionを調べてアンインストールしましょう。
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin17]
$ rbenv uninstall 2.4.1
readlineのインストール
homebrewを使っている場合
$ brew install readline
rubyの再インストール
$ rbenv install 2.4.1
gemを入れる
一度rubyをアンインストールしてしまったのでgemももう一度入れ直す必要があります。
$ gem install bundler
$ bundle install
実はこれで終わり!
改めてrails c
したら日本語をしっかり認識してくれた!
readlineをインストールしてからrubyを入れ直すと、自動的にreadlineを参照してくれるのかも?
参照しているパスなどを変更する必要もなかった。
(これで動かなかった人はターミナル再起動を試してみてください)
確認方法
今回インストールしたreadlineを参照している元はreadline.bundle
とかいうやつ。
こいつがreadlineを参照してくれていれば、無事readlineに切り替わっているということになる。
まずは、readline.bundleの場所を調べる
$ find ~/.rbenv/versions -name readline.bundle
/Users/kouch/.rbenv/versions/2.4.1/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle
/Users/kouch/.rbenv/versions/2.4.3/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle
今回は2.4.1の方を確認したい。
otool -L
というコマンドを使うと、そのファイルが参照しているライブラリの一覧を見せてくれる。
$ otool -L /Users/kouch/.rbenv/versions/2.4.3/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle
/Users/kouch/.rbenv/versions/2.4.3/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle:
/usr/local/opt/readline/lib/libreadline.7.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
上記のように、ここでreadlineが出てくれればOK
最後に
rails c
やirbで日本語が使えないと何かと不便なので、早めに対応させておきたいですね。