LoginSignup
1
1

More than 1 year has passed since last update.

WSL2上のUbuntuに立ち上げたDockerコンテナ内のRuby SDKをIntelliJのWSLプロジェクトでProject SDKとして扱うことは出来ません!

Last updated at Posted at 2022-07-18

概要と対策

概要

めちゃくちゃ長いタイトルになってしまいました、タイトル通りです。
どうやら以前はタイトルの様な事が出来ていたみたいなのですが、現在は

  • 新規の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設定の流れ

  1. Dockerの設定
    Settings > Build,Execution,Development > Dockerにて一覧上部の+を押す。
    image.png
    どうやらデフォルトでいい感じにしてくれるみたいで、設定をいじらずとも設定フォーム下部の左側に接続が成功している旨のメッセージが出ました。

  2. SDKの登録
    Project Structure > Platform Settings > SDKsのSDK一覧上部の+からAdd Ruby SDK... > Remote Interpreter or Version Manger...を選択
    image.png
    設定用ウィンドウが出てくるので、Docker Composeを選択するとほとんどの欄が埋まっているのでServiceの欄だけ任意のものを選択し、OKを押します。
    するとしばらく読み込みが行われ、完了すると一覧に先ほど登録したものが追加されると思います。

  3. Project SDKとして選択
    Project Structure > Project Settings > ProjectからSDKを選択することで先ほど登録したSDKがこのプロジェクトで使えるようになるはずなので、選択したいのですが利用可能なSDKの一覧に並んでいません。 
    image.png

本来であれば下の画像の様に先ほど追加したSDKが選択できるようになっている状態を想定していました。
image.png
上記の画像はWSL上ではないホスト側に適当なプロジェクトを作って読み込んでいる画像で、WSL上のプロジェクトでなければWSL2上のDockerコンテナ内のRuby SDKでも読み込める様です。

この様にDockerコンテナ内のRuby SDKは登録してもProject SDKとしては読み込めないようになっており、このままでは補完すら効かず、IntelliJの恩恵をほとんど受けることが出来ません。

対策:Module SDKとして読み込む

登録したRuby SDKはProject SDKとしては読み込むことが出来ませんでしたが、Project Structure > Project Settings > Modulesを確認すると先ほど登録したRuby SDKが表示されています。(SDKの名前が変わっていますが、上記の手順で登録したものです。)
image.png
こちらを選択することでModule SDKとしてWSL2上のDockerコンテナ内のSDKを設定することができ、IntelliJの恩恵を最大限受けることが出来るようになりました。

謝辞

当初のこの記事ではModule SDKとして設定する対策に行き着いておらず、TwitterにてJetBrainsのCountry ManagerであるMasaru Horioka様にご教示いただき対策まで記載することが出来ました。
また最初に問い合わせたJetbrainsのサポートの方からも補足の連絡を頂き、詳細な確認にご対応頂きました。

この度は手厚いサポートを頂きまして、誠にありがとうございました。

1
1
0

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
1
1