概要と対策
概要
めちゃくちゃ長いタイトルになってしまいました、タイトル通りです。
どうやら以前はタイトルの様な事が出来ていたみたいなのですが、現在は
- 新規のRubyプロジェクトを作成する際のRuby SDKとしてWSL2上のDockerコンテナ内のRuby SDKを選択すること
- 既存プロジェクト内でSDKとして登録したWSL2上のDockerコンテナ内のRuby SDKをProject SDKとして選択すること
の二点が、技術的な要因により出来なくなっているようです。
対策
WSL上のDockerコンテナ内のRuby SDKはProject SDKには設定できませんが、Module SDKとしては設定することが出来ます。
よって既存プロジェクトに設定する場合は、Project Structure > Project Settings > Modules > Ruby SDK and Gems
からDockerコンテナ内ののRuby SDKを登録、または登録したSDKをModule SDKとして設定することで問題を回避することが出来ます。
新規プロジェクトの場合は、一度何らかの方法でプロジェクトを作成してから既存プロジェクトとして開き、上記の手順を踏むことで同様に問題を回避するのが現状の対策の様です。
公式の今後の対応
現在開発リクエストとして、新規プロジェクトの際にRemote SDKをProject SDKとして選択出来る様に
が挙がっています。
私と同じ様に困った方は、是非投票をお願いします!
タイトルの問題については上記の内容で全てですが、以下に私がこの問題に直面するまでの詳細な経緯とModule SDKとしての設定の手順を記載します。
やりたくて出来なかったこと
WSL2上のUbuntuにDockerを利用してRailsの環境を作成、ホストのIntelliJからプロジェクトを開いてSDKとしてDockerコンテナ内のRubyを読み込むことでRuby自体やGemの補完等を効かせてもらいたかった。
だめだったSDK設定の流れ
-
Dockerの設定
Settings > Build,Execution,Development > Docker
にて一覧上部の+
を押す。
どうやらデフォルトでいい感じにしてくれるみたいで、設定をいじらずとも設定フォーム下部の左側に接続が成功している旨のメッセージが出ました。 -
SDKの登録
Project Structure > Platform Settings > SDKs
のSDK一覧上部の+
からAdd Ruby SDK... > Remote Interpreter or Version Manger...
を選択
設定用ウィンドウが出てくるので、Docker Composeを選択するとほとんどの欄が埋まっているのでService
の欄だけ任意のものを選択し、OKを押します。
するとしばらく読み込みが行われ、完了すると一覧に先ほど登録したものが追加されると思います。 -
Project SDKとして選択
Project Structure > Project Settings > Project
からSDKを選択することで先ほど登録したSDKがこのプロジェクトで使えるようになるはずなので、選択したいのですが利用可能なSDKの一覧に並んでいません。
この様にDockerコンテナ内のRuby SDKは登録してもProject SDKとしては読み込めないようになっており、このままでは補完すら効かず、IntelliJの恩恵をほとんど受けることが出来ません。
対策:Module SDKとして読み込む
登録したRuby SDKはProject SDKとしては読み込むことが出来ませんでしたが、Project Structure > Project Settings > Modules
を確認すると先ほど登録したRuby SDKが表示されています。(SDKの名前が変わっていますが、上記の手順で登録したものです。)
こちらを選択することでModule SDKとしてWSL2上のDockerコンテナ内のSDKを設定することができ、IntelliJの恩恵を最大限受けることが出来るようになりました。
謝辞
当初のこの記事ではModule SDKとして設定する対策に行き着いておらず、TwitterにてJetBrainsのCountry ManagerであるMasaru Horioka様にご教示いただき対策まで記載することが出来ました。
また最初に問い合わせたJetbrainsのサポートの方からも補足の連絡を頂き、詳細な確認にご対応頂きました。
この度は手厚いサポートを頂きまして、誠にありがとうございました。