Windowsホスト上のRubymineからWSL上のレポジトリを開いてRspecを実行する
以前、WSL2を使って、Windowsホスト上のRubymineからRspecを実行するというエントリを投稿したのですが、そのエントリは、
- Windowsファイルシステムに、Ruby on railsのソースを置き、
- Windows上のRubymine上でRspecを実行する
というものでした。
本エントリでは、
- WSL2上(Linux)ファイルシステム上にRuby on railsのソースを置き、
- Windows上のRubymine上でRspecを実行する
という内容についてまとめています。
やりたいこと詳しく
Ruby on railsのプロジェクトについて、gitレポジトリをWSL2上に置き、Windows上のRubymineから当該プロジェクトファイルを編集できます。
それだけでなく、RspecをRubymine上で実行し、Rubymineの「実行」ペインに結果が表示されたり、個別のスペックを「実行」すればそのファイルだけspec実行できたりする機能を使いたい。
そのためにはどうすればよいか、ということを記載いたします。
こちらのページ: テスト結果の表示と調査 | RubyMine
使用した各種バージョン
- Windows 10 Home / バージョン: 21H1 / ビルド: 19043.1889
- Docker Desktop for Windows 4.10.1 (82475)
- Rubymine 2022.2.1(2022/08/21時点での最新版)
前提
- RubymineにはJapanese Language Packを入れてあります。
- WSL2用のLinuxとして、「Ubuntu-20.04」を入れて利用していると仮定します。
- Rspecを実行したいソースファイルは、下記パスにあると仮定します。
- /home/hogehoge/development/samplerails
- /home/hogehoge/development/samplerails/docker-compose.ymlにてコンテナオーケストレーションしており、railsのコンテナ名は、「web」とします。
手順
- Windows上で、WSLパスをネットワークドライブに割り当てる
- Windows上のRubymineから、ネットワークドライブ上(WSL上)のソースを開く
- WSL2上で、WSL2上のソースにアクセスしてdockerコンテナを立ち上げる
- Rubymine上にていろいろ設定
- Rubymine上で、Rspecを実行
以下、順に説明いたします。
1. Windows上で、WSLパスをネットワークドライブに割り当てる
エクスプローラーの左側のファイルツリーにて、「PC」部分を右クリック→「ネットワークドライブの割り当てを開きます。
ここでは、「Z:」ドライブに、\\wsl$\Ubunut-20.04
を割り当てます。
参考: WSLをネットワークドライブに割り当てて便利に使う方法 | ハングスタック
2. Windows上のRubymineから、ネットワークドライブ上(WSL上)のソースを開く
WSL2上で /home/hogehoge/development/samplerails
のパスであれば、
Z:\home\hogehoge\development\samplerails
になります。
これをRubymineで開きます。
3. WSL2上で、WSL2上のソースにアクセスしてdockerコンテナを立ち上げる
Windows Terminal などから「Ubuntu-20.04」を立ち上げて、WSL2内のLinuxから、home/hogehoge/development/samplerails
にアクセスし、dockerコンテナを立ち上げます。
こちらでは、docker-compose を利用していると仮定します。docker-composeのバージョンなどでコマンドラインは変化しますが、お使いのバージョンに合わせたコマンドで起動してください。
以下はコマンド実行例です。
# docker-compose でコンテナ達をサービスとして起動
docker-compose up -d
# 以下は適宜
# bundle install (/path/to/app は適宜書き換えてください。)
docker-compose exec web /path/to/app/bin/bundle install
# dev serverの起動 (/path/to/app は適宜書き換えてください。)
docker-compose exec web /path/to/app/bin/bundle exec rails s -b 0.0.0.0
4-1. Rubymine設定: docker
設定 > ビルド、実行、デプロイ > Docker を開きます。
上記で、「Windows用Docker」を選択します。
右下に「接続完了」と表示されればOKです。
4-2. Rubymine設定: remote環境としてのdocker内のコンテナへのアクセス
設定 > 言語&フレームワーク > Ruby SDK および Gem を開きます。
上記で、「+」ボタン > 新規リモート.. を選択します。
開いたウインドウで、「Docker Compose」を選択し(「WSL」ではない)、サービス部分で、Railsのコンテナである「web」を選択し、OKとします。
しばらく読み込みに時間がかかりますが、正常に読み込めたら、ウインドウが閉じて、元のウインドウに戻り、左ペインに「Remote: rubyX.X.X-pXXX(docker-compose://~)」のようなものが追加されると思いますので、そちらをクリックして選択状態にします。
右ペインに「rspec」gemが読み込まれていることを確認できればOKです。
これで設定ウインドウからの設定は完了です。
5. Rubymine上で、Rspecを実行
Rspecの実行については、実行の構成の設定が必要です。
ひとまず、ここでは、Rspecディレクトリ以下のspecすべてについてRspecを実行する構成を例として設定を行います。
Rubymine上にて、通常、右上にあるデバック部分にて、「実行構成の編集」をクリックします。
実行構成ウインドウが開いたら、左上の「+」ボタン > Rspecを選択します。
設定を下記のようにします。
項目 | 値 |
---|---|
名前 | Rspec All(任意の名前でいいです) |
モード | フォルダー内のすべてのスペック |
スペックフォルダー | ソース内の rspec フォルダルートパスを指定 |
ファイル名のマスク | **/*_spec.rb |
Ruby SDK | 有効なものを指定(上記で設定したリモートSDKを指定) |
docker-compose | docker-compose run |
さらに、上記設定部分で、「パスマッピング」を設定します。
- ローカル: Z:\home\hogehoge\development\samplerails
- リモートは、上記ローカルに合わせて WSL2上のパスを指定します。
あとは、Rspecを実行すれば、底部のRunペインでRspecが実行されるはずです。
個別ファイルのRspec「実行」について
個別のspecファイルを「実行」して、当該ファイルだけRspecを実行したい場合は、下記設定が必要です。
Rubymine上にて、通常、右上にあるデバック部分にて、「実行構成の編集」をクリックします。
その後、上画像の右下あたりにある「構成テンプレートの編集」から、「Rspec」を選び、パスマッピングを上記と同様に設定します。
また、「docker-compose」の項目を「docker-compose run」にします。
これで、個別のspecファイルのタブ上で右クリック→実行で、当該ファイルだけRspecの実行を行い、結果が「実行」ペインに表示されるはずです。
トラブルシュート
Rspecの「実行」ペインが文字化けする
ヘルプ → カスタムVMオプションの編集を開き、下記を追記します。
-Dfile.encoding=UTF-8
再起動すれば直っているはずです。
Discussion