仮想サーバで bin/rails コマンドとかがクッソ遅い件
Ruby on Rails v4.2.0
Vagrant+VirtualBox を使って構築した仮想サーバ (CentOS 6.5) で、/vagrant 共有ディレクトリでを rails プロジェクトのルートディレクトリにしていて、
$ bin/rails s
とか
$ bin/rake about
とかコマンドを実行すると、すごい遅い! bin/rake about でなんと30秒以上かかりました。ホンマに Spring 効いているのかしらん?と思ったけど、最早そんなレベルじゃないよね。
なんでだろ〜??と思ってたら、どうやら gem をプロジェクト内にインストールしていたのが原因だったみたい
$ bin/bundle install --path=vender/bundle
とかってやっていたんだけど、試しに .bundle ファイルを消して、改めて
$ bin/bundle install
と gem をグローバルにインストールし直したら、普通のスピードで動きました!
gem のインストール先が /vagrant 以下の共有ディレクトリだったってところが時間がかかってしまっていた理由なのかも。別にグローバルにインストールしなくても、共有ディレクトリ外にインストールすればよいみたい。
ってゆーか、そもそも開発用の仮想サーバ上で複数のプロジェクトを扱う必要もないので、仮想サーバ上では gem をグローバルにインストールってことにしておきます。
一度インストールしてしまった vender/bundle 以下の Gem たちはごそっと消しておきました。
$ rm -rf vendor/bundle
ちなみに本番サーバで bundle install する際は --deployment オプションをつけると、プロジェクト内 (デフォルトは vendor/bundle ディレクトリ) にインストールしてくれます。
$ bin/bundle install --deployment