起こったこと
- MacとWindowsで開発しているプロジェクトで、Winを利用して開発をしようとしてdockerを起動したら /usr/bin/env: ‘ruby\r’: No such file or directoryが発生した。
- Macでは何もしなくても普通にdockerが起動する。
- ソースコードを一切変えずに、Win10で起動するとエラーが起こっていた。
原因
- Git for Windowsを利用していると、git pull or cloneするタイミングで、改行コードがLFから強制的にCRLFに変更される仕様らしい
- CRLFはWINでは動くけどunix系だと動かない
- そのためdockerで起動すると、改行コードがうまく解釈できずに問題が起こっていた。
対処方法
- これでなおった
$ git config --global core.autocrlf input #clone pull時に改行コードをCRLFへ強制変換をしない設定に変更
$ rf -rf your-repo #レポジトリを削除
$ git clone your-repo #レポジトリをクローンしなおす
$ docker system prune # コンテナもろともすべて削除
$ docker-compose up #upしなおす
補足
- 改行コードには、以下3つがある
- CR
- LF
- CR/LF
- CR/LFはWin系で動作する。LFはUnic系で動作するらしい。(ここちょっと知識なくて怪しい)
- ちなみに弊社はrubocopを使っているのだが、いつもWIN環境でcarridge return があるよ~と怒られていた。謎だなぁと思っていたがこれが原因だった。
参考