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を作ります。

```ruby:./.powenv
export RUBY_DEBUG_PORT=1234
export POW_WORKERS=1
```

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

```ruby:./Gemfile
gem 'ruby-debug-ide'
gem 'debase'
```

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

```ruby:./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](https://qiita-image-store.s3.amazonaws.com/0/11074/1cbb26a5-f52c-6151-356e-86359deb92ad.png "Run_と_Menubar.png")

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



![Run_Debug_Configurations.png](https://qiita-image-store.s3.amazonaws.com/0/11074/a5c95fda-b437-0b47-9968-4d6d1bcca349.png "Run_Debug_Configurations.png")

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

![Run_Debug_Configurations.png](https://qiita-image-store.s3.amazonaws.com/0/11074/6c894db9-acab-9b2d-c46c-11ba15611a5c.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 再起動 & オープン

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

### RubyMine の Debugボタンを押してリモートデバッガを起動。
![railsgirls_-____development_railsgirls_201412_railsgirls_.png](https://qiita-image-store.s3.amazonaws.com/0/11074/14b8fa85-5a12-c09a-4ed6-e7ce584a0b20.png "railsgirls_-____development_railsgirls_201412_railsgirls_.png")


※もし下のような画面がでたら powder open できてないか、しばらく時間が経ってため suspend状態になっているハズなので 再度 powder openしてアクセスしてからDebug実行してみてください。
![This_should_not_be_shown.png](https://qiita-image-store.s3.amazonaws.com/0/11074/534565e6-60b4-548b-c7c5-81307a6d2607.png "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](https://qiita-image-store.s3.amazonaws.com/0/11074/1b1e36be-f913-94bb-663d-f8d0b0fb75c7.png "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