yamotonalds's blog

Webアプリケーション開発における技術メモが中心です。たまにWebサービス、興味を持ったデバイス、自作PCに関する話題もあるかも。Amazon好きなのでAmazon.co.jpアソシエイト使ってます。

rails consoleで日本語を使えるようにする

ちょっとしたコードの確認等でrails consoleを使うことが多いのだけれど、日本語を入力すると勝手に文字コードに変換されてしまっていた。

例えばコンソールで全角スペースを入力すると「U+FFE3」と表示される*1

今まではそんなにコンソールで日本語を使わなかったので放置していたが今後日本語を使いそうなのでどうにかすることにした。

 

検索してみると次のようなページを見つけた。

Mac OS X Lion で rvm 管理下の Ruby の irb で日本語が文字化けするのを直した | EasyRamble

readlineというものをインストールしてからrubyをインストールし直せば良いらしい。

自分のローカル環境は以下の通り。

readlineのインストール

まずは上記のページに書いてある通りにコマンドを実行。

rvm pkg install readline
rvm reinstall all --force

 Ruby 1.8.7はインストールされたが残りはエラーでインストールされなかった。

 1.9.2は今は使っていないので1.9.3だけ指定してインストール。

rvm reinstall 1.9.3

 ここでインストールできていれば簡単な話だったのだけれどエラーでインストールできなかった。

エラーログを見てみるとreadlineのコンパイルに失敗している模様。

readlineのディレクトリを指定してRubyをインストール

エラー内容で検索するとHomeBrewでreadlineをインストールするだの--with-readline-dir="path/to/readline"をインストールコマンドに付けろだの、いろいろな解決方法が見つかったがどれも自分の環境ではうまく行かず、結局うまく行ったのは次のページの方法だった。

Add Readline support to Ruby on Mac OS X · guard/guard Wiki

 このページの「Using RVM」の通りにするとRubyがインストールできた。

結局、「~/.rvm/user/db」ファイルに「ruby_configure_flags=--with-readline-dir="$rvm_path/usr"」と記述するのが自分の環境では正解だったようだ。

bundlerでnative componentを再インストール

Rubyの再インストールができたのでrails consoleを起動してみる…と以下のようなエラーで起動できない。

/path/to/application/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': dlopen(/path/to/application/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle, 9): Library not loaded: /path/to/user/.rvm/rubies/ruby-1.9.3-p327/lib/libruby.1.9.1.dylib (LoadError)
  Referenced from: /path/to/application/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
  Reason: image not found - /path/to/application/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
  ...

 これも調べてみると次のページが見つかった。

Rails, pow and Library not loaded: /usr/local/lib/libsqlite3.0.8.6.dylib - Stack Overflow

 要するにRubyが変わったからnative componentのgemをインストールし直せということらしい。

bundlerでgemを指定して再インストールする方法がわからなかったので次の手順で行った。

  1. Gemfileからエラーの発生したgemの記述をコメントアウトする
  2. bundle cleanを実行してコメントアウトしたgemをアンインストールする
  3. Gemfileを元に戻してbundle installを実行し、gemをインストールする
  4. rails consoleを起動してみてエラーが無くなるまでこれらの手順を繰り返す

 自分の場合、sqlite3とdeviseをインストールし直すとコンソールを起動できた。

 

まだ十分な動作確認ができている訳ではないけれどひとまずrailsが起動するようになったのでここまでの手順をメモしておく。

簡単な再インストールのはずが面倒で時間のかかる事態になってしまって困ったがなんとか解決できて良かった…

 

*1:全角スペースの文字コードはU+FFE3ではないと思うのだけれど…