解決した方法を先に書くと
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$\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