WindowsでもRailsの開発環境をそろえてみた

Railsの開発は、基本MacBook Proで行っているので、何の感慨もなく環境構築できるのですが、WindowsだといろいろUNIX系OSとの差異が目立って、開発環境を準備できておらず、家のWindows DesktopがTwitter専用マシンと化していたので、この際開発環境を構築してみたのでメモです。

当初はWSL(無印)で頑張ろうとしていたんですが、Dockerがうまく動かなかったので、Insider Previewを有効化した上でWSL2を使用しています。

WSL2はWindows 10のbuild 2004から利用可能になります、リリースまで秒読み段階みたいなのですが、COVID-19の影響を受けているようで、リリースされそうだけどされないような状態になっています。。。 もう4月終わるよ

なお、IDEはRubyMineを使用します。

WSL2を有効化

qiita.com

にいい感じの方法が載っていたのでそのまま(おい

Ubuntuをインストール

数日前に、Ubuntu 20.04 LTSがリリースされましたが、人柱にはなりたくないので、おとなしく18.04 LTSを入れることにします。

Windows側にDocker Desktopをインストール

Ubuntu on WSLでは、Docker darmonは動かさず、Windows OS上で動いているDocker daemonを使用する形式のようです。

そこで、Windows側にDocker Desktopをインストールして、起動しておきます。

f:id:beah:20200428011435p:plain

WSL2で動くLinuxディストリビューションが、Settings→Resources→WSL INTEGRATIONに表示されているので、トグルをオンにしておきます。

Ubuntu上でDockerを動かしてみる

早速、動かしてみます。

f:id:beah:20200428011835p:plain

うん、いい感じですね!

rbenvをインストール

・・・中身Ubuntuなので、特に思うこともなく、インストールします

RubyMineにWSL上のRubyを読み込ませる

VSCodeでいうRemote的なものを使って、RubyMineでもUbuntuに入ったRubySDKを読み込ませます。

f:id:beah:20200428012153p:plain

Settings→Languages & Frameworks→Ruby SDK and Gemsを開き、「+」→「New Remote」

f:id:beah:20200428012446p:plain

Linuxディストリビューションを選択しますが、ここで注意したいのがRubyのパスです。

rbenvでインストールしたRubyは、どこにあると思いますか?見てみましょう。 (kentaroはユーザー名なので、適宜置換してください)

kentaro@DESKTOP1:~$ which ruby
/home/kentaro/.rbenv/shims/ruby

~/.rbenv/shims/rubyが、Windows側から見えない(というより、shimsというディレクトリは実際には存在しないようです)、RubyMineではエラーになってしまいます。

そこで、それぞれのバージョンごとに、パスを指定してあげます。

/home/kentaro/.rbenv/versions/{Rubyのバージョン}/bin/ruby

ターミナルもWSLを使うようにする

Dockerコマンドを叩いたりするのは、Ubuntu上で行います。

なので、RubyMineから見えるTerminalもUbuntuのものにしたいですよね。

f:id:beah:20200428014221p:plain

「Tools」→「Terminal」の「Shell path」をC:\Windows\System32\bash.exeにします。

f:id:beah:20200428014338p:plain

うん!いい感じですね!

まとめ

説明になってるようでなってないのですが、備忘録ということなので・・・

これで、Windows環境でも開発を進めるのが楽になります。

早くbuild 2004が正式リリースされて欲しい・・・

おまけ:Windows⇔WSLのファイルの扱い

最近のWSLでは、(WSL1も共通で)/mnt以下に、Windowsマシンのディレクトリがマウントされるようになっているようです。

なので、開発のプロジェクトなどはWindows OS側に置いて、Ubuntu側にはそこへのリンボリックリンクを置いておくという運用にしています。 (MacとプロジェクトをDrive経由で同期したいという需要もあるため)