優しいCloud9さんに
rails console
で唐突に怒られた時に、結構ハマったので、解決までの道のりを記録しました。
事象
$ rails console
/usr/local/rvm/gems/ruby-2.4.0/gems/activesupport-5.0.3/lib/active_support/dependencies.rb:287:in `load': /home/ubuntu/.irbrc:5: syntax error, unexpected '^', expecting end-of-input (SyntaxError)
解決までのプロセス
1. お決まりのやつを疑う
- rails server動いてない
- dbをmigrateしてない
- rails testエラーがある
- スペルミスがある
rails console
のエラーとは直接関係無いものもありますが、
そもそも・・・みたいなところのおきまりのチェック事項です。
2. gemfileを疑う
gemファイルのバージョン指定に誤りが無いか確認してアップデート。
$ bundle update
3. gemfile.lockを疑う
gemfile.lockを削除してから再インストール。
$ bundle install
4. springを疑う
一旦止めてから、
$ spring stop
Spring is not running
余計な動きをしているpidが無いか確認。
$ ps aux | grep spring
ubuntu 4496 0.0 0.0 271692 17・・・
killコマンドで停止する。
$ kill -9 xxx
※Cloud9ではシグナル番号-9
ではなく、-15
。xxxにはpidを指定。
5. 迷走
ここでCloud9と関係ないローカル上のrvmとか、似たようなrails consoleのエラー(readlineのエラー)とかを疑い出してどハマりしてしまいました。
6. .irbrc
を疑う
これ、そもそも何かgem的なやつだと思っていてsyntax-error
と言われても全然存在を疑っていなかったのですが、どうやらそもそもいらない子だったようなのでいなくなってもらいました。
rm /home/ubuntu/.irbrc
これで解決しました。
【補足】
irbrcがいらないのではなく、なんかの拍子に生成してしまったこのirbrcファイルが本来rails consoleで読むべきirbrcファイルの邪魔をしていたので、削除したことによってデフォルトのirbrcファイルが正しく読み込まれてsyntax-error
が解消されたと解釈しています。このあたり詳しい方いらしたら補足コメントいただけると嬉しいです…。
まとめ
公式リファレンスが大切と何度も納得していたのに、やっぱり日本語検索してしまうわけでして・・・今回も結局、Cloud9はシグナル番号が違うことや、irbcファイルが余計だったことを公式リファレンスで知ることが出来たので、公式リファレンスの検索や英語での検索をまずやってみようと思いました。
参照サイト
Ruby on Rails tutorial - 3.6 高度なセットアップ - コラム 3.4. Unixのプロセス
Cloud9 Support - Rails console not starting. Error in .irbrc file?