Kumu Tech Blog

for programmer.

RubyMineでPowを使いながらDebugする方法

はじめに

Railsアプリのブラウザテストなどをしていると http://localhost:3000 とかでアクセスしたりしますよね。LAN内の他のマシンやスマートフォン実機から見たいとか、複数プロジェクト同時にアクセスしたいからポート変えて…じゃあDNS立てないと…とかが面倒なので、その辺を一気にスマートに解決してくれたのが Powでした。Powを使うと http://myapp.dev/ といったURLで開発中のアプリにアクセスする事ができます。

RubyMineでRailsを起動する場合は 普通に http://localhost:3000 になってしまいます。Powを使ってスマートなURLを保ちつつRubymineで便利にデバッグしたいという要求があったので連携方法を調べてみました。

まずは連携用のファイルを作る

Rails Project 直下に .powenvを作ります。

1
2
3
4
.powenv

export RUBY_DEBUG_PORT=1234
export POW_WORKERS=1

GemFileに下記のgemを追加します。

1
2
3
4
Gemfile

gem 'ruby-debug-ide'
gem 'debase'

Powで起動されるように下記のようなファイルを作ります。 Rails なら config/initializers に任意の名前で作成します。

1
2
3
4
5
6
./config/initializers/remote_debugger.rb

if ENV['RUBY_DEBUG_PORT']
  require 'ruby-debug-ide'
  Debugger.start_server nil, ENV['RUBY_DEBUG_PORT'].to_i
end

RubyMineのリモートデバッガ設定

RubyMineを起動してメニューの “Run” -> “Edit Configurations…” を選択

Run_と_Menubar.png

左上の + ボタンを押して Ruby remote debug を選択

Run_Debug_Configurations.png

リモートデバッグ用の値設定

Run_Debug_Configurations.png

項目 設定値
Remote host: localhost
Remote port: 1234 (.powenvで設定したポート番号)
Remote root folder: Railsプロジェクトのルートパス
Local port: デフォルトのままでOKです。
Local root folder: Railsプロジェクトのルートパス

と設定したらOKボタンを押して設定完了です。 (設定名はご自由に。ここでは Pow Debugにしました。)

Debug実行

ターミナルで powder 再起動 & オープン

1
2
$ powder restart
$ powder open

設定反映の為にpowder restartと、アプリケーション起動の為に ブラウザからのアクセスが必要です。

RubyMine の Debugボタンを押してリモートデバッガを起動。

railsgirls_-____development_railsgirls_201412_railsgirls_.png

※もし下のような画面がでたら powder open できてないか、しばらく時間が経ってため suspend状態になっているハズなので 再度 powder openしてアクセスしてからDebug実行してみてください。 This_should_not_be_shown.png

Couldn’t Connect To Debugger Cannot connect to the debugged process at port 1234 in 10s:

ブレークポイントで止めてみるなんて事も…

これでリモートデバッグが可能な状態です。 たとえば、controllerにブレークポイントを置いて http://myapp.dev/ などのURLでアクセスしてみると、こんな風にちゃんと止まってくれます。値を覗き見る事もカンタンですね。

ideas_controller_rb_-_railsgirls_-____development_railsgirls_201412_railsgirls_.png

ぜひどうしても powを使いながらデバッグしたい!! という時にお使いください。 この方法では http://myapp.dev/ はもちろん http://myapp.192.168.0.8.xip.io/ という形式でもOK なので スマートフォン実機から開発機にアクセスしてデバッグしたい…なんていう時には便利かもしれませんね。