Rails つまみぐい

Rails つまみぐい

Ruby on Rails 初学者による行き当たりばったりなメモ

仮想サーバで bin/rails コマンドとかがクッソ遅い件

VagrantVirtualBox を使って構築した仮想サーバ (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