Ruby
Rails
RubyMine
RubyMineDay 13

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

More than 3 years have passed since last update.


はじめに

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

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


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

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


./.powenv

export RUBY_DEBUG_PORT=1234

export POW_WORKERS=1

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


./Gemfile

gem 'ruby-debug-ide'

gem 'debase'

Powで起動されるように下記のようなファイルを作ります。

Rails なら config/initializers に任意の名前で作成します。


./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 再起動 & オープン

$ 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 なので スマートフォン実機から開発機にアクセスしてデバッグしたい...なんていう時には便利かもしれませんね。


謝辞

下記サイトを参考にさせていただきました。stackoverflow様にはいつもお世話になってます。

http://stackoverflow.com/questions/24971656/debugging-in-rubymine-with-pow-as-a-server-ruby-2-1-1-rails-4