LoginSignup
5
1

More than 3 years have passed since last update.

Windows WSL2に移行後 bundle exec rails xxx が激遅だったが解決

Last updated at Posted at 2019-09-14

解決した方法を先に書くと
WindowsのCドライブなどに置いていたrailsプロジェクトをWSLのUbuntu配下に移動する

Mac使っていないマンとしてはWSL2を試してみたくなってWindows Insider Programに参加しました。
Windows Insider ProgramとWSLについては簡単にこちらのブログに書きました。
https://blog.higekick.net/wls2/

Rails Tutorialをやっているのですが、WSL2に移行後、bundle exec rails sとかが遅いことに気づきました。
確かに各種gitコマンドは速くなっている気がします。
なんでかなと思って予想したのがrailsのプロジェクトを置いているディレクトリの位置でした。
wsl2は仮想マシン上で動いているとかなんとか聞いたのですがWindows側から見た時の位置が以下のようになっていました。

wsl-directory-path.png

パスとしてはこんな感じになっていました。

\\wsl$\Ubuntu

wsl1の時の位置はちょっと把握していないのですが、Networkの下とかじゃなかったですよね。
本題のrailsプロジェクトですが、WindowsのDドライブに置いてUbuntuのホームディレクトリからシンボリックリンクで参照できるようにしていました。
wsl2に移行後もちゃんとそれは維持されていて、wsl1と同じようにrailsプロジェクトのディレクトリを参照できて、$ code rails-tutorial-sampleapp/ とかでVS CODEで開いてRails Tutorialを楽しむことができました。

hige@thkpdE480:~$ pwd
/home/hige
hige@thkpdE480:~$ ls -la src
lrwxrwxrwx 1 hige hige 10 Sep  5  2018 src -> /mnt/d/src

しかしrailsの各種コマンドが遅いのですね。5分くらいでやっとrails serverが立ち上がる感じです。
そこまで待ってみた私もすごいのですが、なんでこんな遅いのか解決したかったです。

で、やっぱりこのネットワーク下になってしまった \\wsl$\Ubuntu のディレクトリからDドライブのプロジェクトを参照してしまっているからでは?と思ったのですよね。
そこで以下のようにホームディレクトリに配置したら速くなりました。

\\wsl$\Ubuntu\home\hige\src2\rails-tutorial-sampleapp

実際にはgitでcloneしなおしたのですが、railsプロジェクトなので移動後、railsが起動できるようになるまでどうやったのかメモしておきます。railsプロジェクトをcloneして自分の端末で開発できるようにするときはだいたいこうやるのかなと思っております。

  • Ubuntu下のディレクトリでcloneしなおす
$ git clone [リポジトリURL]
  • rubyをセットする
$ rbenv local 2.6.1
  • gemsをインストールする
$ bundle install --path vendor/bundle
  • DBをテスト環境(開発環境?)用にマイグレートする, テストデータを入れる
$ bundle exec rails db:migrate RAILS_ENV=test
$ bundle exec rails db:seed
  • テストして通ればOK
$ bundle exec rails test
  • サーバーが立ち上がってログインし、テストデータが見えればOKとする
$ bundle exec rails server

これらのbundle exec rails xxxコマンドが前みたいに普通の速さで実行できるようになりました。
wsl1の頃よりたぶん速くなっているんですよね!?確かに速くなっている気がします。
Macだとこんな苦労しなくても良さそうだけど、いろいろな制約でWindows使うしかない方とかたくさんいらっしゃると思います。共にがんばりましょう!

増税前にMac買ったほうがいいですかね... 2019/09/15

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1