React + Rails + Vite.js なSPAアプリを、RubyMineを使ってReactとRailsの両方をデバッグしてみた

JetBrainsの資料にある通り、RubyMineではRailsに加えてReactもデバッグできます。

 
Reactのデバッグについては、公式ドキュメントに

Only for applications created with create-react-app.

Debugging of JavaScript code is only supported in Google Chrome and in other Chromium-based browsers.

Debug a React application - React | RubyMine

とあることから、 create-react-app で作ったReactアプリしかデバッグできないようも感じます。

 
ただ、手元で試したところ Vite.jsで作ったReactアプリもデバッグできたため、手順をメモしておきます。

 
ちなみに、JetBrainsのyoutrackには Vite.js に関するものも登録されているため、合わせてご確認ください。
Support for vite : WEB-46507

また、今回メモした内容よりも良い方法をご存じの方がいらっしゃいましたら、教えていただけるとありがたいです。

 
目次

 

環境

以前作成した、React + Rails + Vite.js なSPAアプリを使います。
React + Rails + Vite.js なSPAアプリをモノレポで作ってみた - メモ的な思考的な

 
今回は、ReactやRailsのバージョンは変えず、 Vite.js まわりをアップデートした上で利用します。

  • mac
  • バックエンド
  • フロントエンド
    • TypeScript 4.4.4
    • React.js 17.0.2
    • React Router 5.2.1
    • Vite.js 2.9.1
    • vite-plugin-ruby 3.0.9

 

デバッグするまでの流れ

Railsをdevelopmentで起動するための設定を追加

まずは、Rails を development で起動する設定を行います。

Select Run/Debug Configuration の枠から Edit Configurations... を選択します。

次に、以下の図のようにRailsの起動設定を行います。

なお、RubyMineでRailsプロジェクトを読み込んでいれば設定済かもしれません。

 

Reactを run dev する設定を追加

続いて、同じく Run/Debug Configuration より、Reactを run dev で起動するための設定を追加します。

npm テンプレートにて、プロジェクトの package.json を参照して run dev するような設定とします。

 
なお、今回の package.jsonscripts はこんな感じで、Reactは vite を使って起動するようになっています。

{
  "name": "frontend",
  "version": "0.0.0",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "serve": "vite preview"
  },
  // (略)
}

 

Debugボタンで、RailsとReactを起動

上記で設定したRailsとReactをデバッグ起動します。

Rails

 
React

 

Reactタブの Process Console | Scripts より、Cmd + Shift を押しながらリンクをクリック

続いて、Reactタブにある Process Console | Script タブを開きます。

次に、Consoleで表示されている Local: http://localhost:7031/vite/ *1 のリンクに対し、 Cmd + Shift を押しながらクリックします*2

 
すると、何も設定されていないブラウザが開きます。

ただ、この時点では Local で指定されていたURLを開くので、何も表示されていません。

 
ちなみに、この時点でRubyMineを見ると、 vite タブが新しく追加されています。

 
また、JavaScript Debug の configuration が追加されています。内容はこんな感じです。

 

ブレークポイントを仕込む

今回はRailsとReact、両方にブレークポイントを仕込みます。

Rails

 
React

 

起動したデバッグ用のブラウザに、アプリのURLを入力する

デバッグの準備ができたので、先ほど起動したデバッグ用のブラウザに、今回のアプリのURL http://localhost:7100 を入力します。

すると、Reactの画面が表示されます。

 
しばらくたつと、Railsブレークポイントで止まります。

 
続いて、 Resume Program ボタンを押して次のブレークポイントまで飛ばすと、今度はReactのブレークポイントで止まります。

ブレークポイント時点での変数などの情報も確認できます。

 
以上より、React + Rails + Vite.js な構成でも、RubyMineでReactとRailsデバッグできることが分かりました。

 

ソースコード

Githubに上げました。
https://github.com/thinkAmi-sandbox/react_with_vite_rails-sample

 
今回試したソースコードは、こちらのプルリクになります。
https://github.com/thinkAmi-sandbox/react_with_vite_rails-sample/pull/2

*1:ポートなどは環境により変わるかもしれません

*2:今回はmacを使っているため、他のOSの場合はショートカットキーが異なるかもしれません