RubyMineアドベントカレンダー2014で集まった質問に回答します


## はじめに

RubyMineアドベントカレンダー2014では、みなさんから読んでみたい記事やRubyMineに関する質問を募集していました。

[RubyMineが気になっているみなさんへ（質問募集）](http://qiita.com/advent-calendar/2014/rubymine/about)

ここまでのRubyMineアドベントカレンダーの記事で回答が出ているものもありますが、そうでない質問もいくつかあるのでこの記事の中で可能な限り答えていきたいと思います。

## デバッグするときのワークフローが知りたい（@youcuneさん）
> ・デバッグするときのワークフロー
・RubyMineでコードを書いてターミナルにしょっちゅう切り替えてしまっていてもっとRubyMineの機能を使って効率化できるのではないかと思っています。
（以前動画配信で @jnchito さんのRubyMineさばきを見て以来、自分の使いこなせていなさに気づきましたｗ）

EclipseやVisual StudioのようなIDEを使ったことがある人は予想が付くと思いますが、一番簡単な方法は「ブレークポイントを付けてデバッグ実行」です。

ブレークポイント（左の赤丸）を付けます。
![Screen Shot 2014-12-23 at 15.38.27.png](https://qiita-image-store.s3.amazonaws.com/0/7465/78cce727-19ae-ff1f-1dac-998ebf20d9a7.png "Screen Shot 2014-12-23 at 15.38.27.png")

テストをデバッグ実行させる場合
![Screen Shot 2014-12-23 at 15.43.43.png](https://qiita-image-store.s3.amazonaws.com/0/7465/8cdc1149-d6bd-52fa-50d1-6018e7c63762.png "Screen Shot 2014-12-23 at 15.43.43.png")

Railsサーバーをデバッグ実行させて、ブラウザの操作内容をデバッグする場合
![Screen Shot 2014-12-23 at 15.44.30.png](https://qiita-image-store.s3.amazonaws.com/0/7465/5515d7e3-4527-9005-73b6-dee23c7626ba.png "Screen Shot 2014-12-23 at 15.44.30.png")

ブレークポイントで止まると、変数の内容が確認できます。
![Screen Shot 2014-12-23 at 15.40.10.png](https://qiita-image-store.s3.amazonaws.com/0/7465/814a8859-0123-a3ed-5103-07e6bcdd4f8a.png "Screen Shot 2014-12-23 at 15.40.10.png")

RubyMine 7からはコンソールを使って対話的に変数の内容やメソッドの戻り値を確認できます。
![Screen Shot 2014-12-23 at 15.41.20.png](https://qiita-image-store.s3.amazonaws.com/0/7465/1a20c66f-dffa-6785-d3be-b4504aea2458.png "Screen Shot 2014-12-23 at 15.41.20.png")

標準のRailsサーバーではなく、Pow/Powderを使っている場合は@spring_akiさんのこちらの記事が参考になります。

[RubyMineでPowを使いながらDebugする方法](http://qiita.com/spring_aki/items/8319af8ec12b444f167b)

また、コンソールから実行するコマンドのデバッグ実行は@t_oginoginさんの記事が参考になります。

[RubyMine初心者が定期実行させるJobのデバッグに挑戦](http://qiita.com/t_oginogin/items/17662d1addeafdd5b94d)

## GitHubを使ったワークフローが知りたい（@Yukibouさん）

> 試行中で、これから環境整えていこうと思っていますが、そこでやりたいことを列挙しておきます。
・Git、Github を使った開発ワークフロー
>
> SublimeText + iTerm + tig でやっていたようなことを移行できればと。
>
> 色々わかったら、自分で記事書いてもいいかなと思っています。

こちらの質問は @Yukibou さん自身が記事を書いてくれました。どうもありがとうございます！

[RubyMine で Git を使う](http://qiita.com/Yukibou/items/cf9bc7d76a3133656c56)

## IdeaVimで操作の互換性を高めたい（@Yukibouさん）
> ・ideVIMを使っていますが、.(ドット)コマンドなど、使えないものがいくつかり、操作の互換性を高めたい

ドットコマンド、使えませんか？僕は普通に使えてますけど。。。
ただ、ときたま本当にVimのコマンドがサポートされていなかったり、IDEのショートカットとコンフリクトしてIDEの設定が優先されてたりする場合があります。

そんなときはPreferenceのKeyMapや、Other Settings => Vim Emulationから好みの設定に変えることができます。

![Screen Shot 2014-12-23 at 7.50.03.png](https://qiita-image-store.s3.amazonaws.com/0/7465/a74450a8-8ccf-3bc7-c973-1289b93091e0.png "Screen Shot 2014-12-23 at 7.50.03.png")

![Screen Shot 2014-12-23 at 7.49.38.png](https://qiita-image-store.s3.amazonaws.com/0/7465/8889a64a-0966-ef5d-3377-10fdbd5395ca.png "Screen Shot 2014-12-23 at 7.49.38.png")

また、どうしてもVimの方が編集しやすいというシチュエーションがあれば、「Vimにコピペ => Vimで編集 => RubyMineにコピペ」するときもあります。
（別にVimを起動してはいけないわけではないので！）

### Keymap設定のTips

「あれ？このショートカットはどこで設定されてるんだ？？多すぎてわからない！！」という場合は、実際にキーを押して設定項目を探すことができます。便利！

![Screen Shot 2014-12-24 at 5.12.39.png](https://qiita-image-store.s3.amazonaws.com/0/7465/f7db99b6-9b58-74be-a5f6-819e4e088d16.png "Screen Shot 2014-12-24 at 5.12.39.png")

## Terminalの日本語入力、日本語表示を改善したい（@Yukibouさん）
> ・Terminal で日本語入力ができないので、できるようにしたい。また、Terminalで日本語表示が切れるなど症状改善

そうですねー、僕も1年ぐらい前にRubyMineを使い始めた頃は「ターミナルの日本語の扱いがイマイチだな」と思ってたんですが、最近はあまり気にならなくなりました。

今回あらためてターミナルの動きを確認してみましたが、確かに表示についてはちゃんと出ることもあれば、途中で切れるときもあるようです。

![Screen Shot 2014-12-23 at 7.59.46.png](https://qiita-image-store.s3.amazonaws.com/0/7465/afe2aae3-21b1-0d2e-96a7-ecebf815bed6.png "Screen Shot 2014-12-23 at 7.59.46.png")

![Screen Shot 2014-12-23 at 7.59.55.png](https://qiita-image-store.s3.amazonaws.com/0/7465/e5d85dc3-d0af-fc12-434a-32f5f716a6df.png "Screen Shot 2014-12-23 at 7.59.55.png")

日本語の入力については僕の環境でもうまく動かないですね。（こっちも表示が変）

![Screen Shot 2014-12-23 at 8.02.29.png](https://qiita-image-store.s3.amazonaws.com/0/7465/a521e8d0-d6df-2525-2563-b0f2f1d87728.png "Screen Shot 2014-12-23 at 8.02.29.png")

ただ、この問題はターミナルを使うからダメなのであって、RubyMine本体の機能を活用すれば日本語が問題になることは（僕が知る限り）ありません。

たとえばRubyMineのTest runnerを使えば日本語は正しく表示できます。

![Screen Shot 2014-12-23 at 8.06.28.png](https://qiita-image-store.s3.amazonaws.com/0/7465/4b689c47-3779-aa8f-5638-6da9f2ba634d.png "Screen Shot 2014-12-23 at 8.06.28.png")

また、irbやrails consoleも「ファイルメニュー > Tools」から起動すれば日本語の入力ができます。

![Screen Shot 2014-12-23 at 8.06.47.png](https://qiita-image-store.s3.amazonaws.com/0/7465/a6f8f442-7c22-7899-752a-488e5bbb7057.png "Screen Shot 2014-12-23 at 8.06.47.png")

というわけで、ターミナルではなくRubyMineの中で日本語を使う、というふうに意識すると、ターミナルの日本語が多少おかしくても「まあいいか」という気持ちになれます。

根本的な解決にはなっていませんが、ご参考までに。。。

## 何から始めたらいいの？(@koichi0814さん)
> アドベントカレンダーのネタになるようなものでもないですが・・・
>
> RubyMineインストールしてみたけど、そもそもどこから始めたらいいのー？
> 　・ターミナル＆MacVimでやってるのとどう違うの？
> 　・Hello World 的なチュートリアルがあれば…

なるほど、最初の最初は確かに「何をしたらいいの？」ってなりますよね。
RubyMineを使い始めた頃は僕の場合、RubyMineの公式ページに載っている情報（What's newやFeatures & Screenshots等々）をざーっと読んで、主要な機能を確認していきました。

https://www.jetbrains.com/ruby/

あとはショートカット集を印刷して、こまめに参照するようにしたりとかもしてましたね。

https://www.jetbrains.com/ruby/documentation/

開発で必要な作業の大半はRubyMineの中で完結できるようになっているはずなので、従来使っていたツールにすぐ飛びつかず、まずRubyMineの中で同等の機能がないか確認していくと、次第にいろんな機能を覚えていけるんじゃないかなーと思います。

## リファクタリングはどれくらいできるの？(@koichi0814さん)
> Rubyってリファクタリングが出来ないって聞いた事ある気がするけど、RubyMineだとリファクタリング出来るの？（変数とかメソッドのリファクタリング）

リファクタリングはRubyMineの得意分野ですよ！
コンテキストメニューを開くとこんな感じになってます。

![Screen Shot 2014-12-23 at 8.17.07.png](https://qiita-image-store.s3.amazonaws.com/0/7465/e84ea1c0-e86a-c393-4e15-be0de7953ba7.png "Screen Shot 2014-12-23 at 8.17.07.png")

個人的によく使うのは、

- クラス名、メソッド名、引数名、変数名のリネーム（Rename）
- 変数やメソッドの抽出（Extract Variable / Method）
- 変数やメソッドのインライン化（Inline）
 
のあたりですね。

他のファイルにも影響が出そうなリファクタリングは実行前に変更点をプレビューできるので、「そこは変更しなくていい！」っていう箇所があれば対象外にすることができます。

![Screen Shot 2014-12-23 at 8.22.19.png](https://qiita-image-store.s3.amazonaws.com/0/7465/de9af491-559d-b7ea-1a9a-2003c8501e6c.png "Screen Shot 2014-12-23 at 8.22.19.png")

あと、Rubyのコードだけじゃなくて、CoffeeScriptやJavaScriptも同じようにリファクタリングできるのがすごいと思います！

![Screen Shot 2014-12-23 at 8.25.14.png](https://qiita-image-store.s3.amazonaws.com/0/7465/7e96fc0c-d6da-0758-2f68-371155438f30.png "Screen Shot 2014-12-23 at 8.25.14.png")

### さらにボーナス！
ちょうど昨日、@mnumaさんがこんな素敵な記事を書いてくれました。
これを読めばさらにRubyMineのリファクタリング機能が理解できるはずです！

[RubyMineでリファクタリングいくつか](http://qiita.com/mnuma/items/05b6cb759e880a09bef5)

## Vimモードってあるの？(@koichi0814さん)
> Vimモードってあるの？

RubyMine標準機能ではありませんが、IdeaVimというプラグインを入れるとほぼVimと同等のVimコマンドが使えるようになります！

https://plugins.jetbrains.com/plugin/164

## Git連携できるの？(@koichi0814さん)
> RubyMine上からGitと連携出来るの？

できます！
詳しくは@Yukibouさんのこちらの記事をどうぞ。

[RubyMine で Git を使う](http://qiita.com/Yukibou/items/cf9bc7d76a3133656c56)

Annotate（git blame）も便利ですね。Annotateについては@spring_akiさんが詳しい記事を書いてくれています。

[RubyMineで簡単に行ごとのコミットログを見る方法 (Annotate,Blame)](http://qiita.com/spring_aki/items/04c229a771e44396c4fd)

あと、ファイルメニューからGitの項目を見ると、他にできることがわかるかもしれません。

![Screen Shot 2014-12-23 at 8.28.13.png](https://qiita-image-store.s3.amazonaws.com/0/7465/a993ab1a-79ff-f21a-3153-3f802e61818a.png "Screen Shot 2014-12-23 at 8.28.13.png")

## 残念なところはどこ？(@koichi0814さん)
> 世界最強の Ruby IDE だけど、ここは残念！という所があれば教えて欲しいです。

Good questionですね！
RubyMineに悪いところはありません！！・・・と言いたいところですが、さすがにそういうわけにはいきません。

1. ちょっと重い/起動に時間がかかる
  - やはりVimのようなテキストエディタに比べると重いです。コードを打っていてもたまに「微妙に遅れてるかも？」というような感覚があります。
  - 大きなRailsアプリだと起動してからコードを打てるようになるまで10秒以上かかるので、簡単な修正であればVimでやってしまうこともあります。
  - 最新のPCにメモリをたくさん載せてRubyMineにたくさんメモリを割り当てたら、もうちょっと快適になるかもしれません。(メモリの割り当て方については@ruziaさんの記事をどうぞ => [RubyMine が気になる人に捧ぐ、ざっくり入門編](http://qiita.com/ruzia/items/2edd8d45c16ac2c70dd7))
2. 大きな画面がほしくなる
  - 左にファイルツリー、メイン画面を二つに分割して左右にファイルを表示、下にテストの実行結果やターミナルを表示・・・と考えるとやはりできるだけ大きな画面がほしくなります。
  - 僕は現在27インチモニタ（2560x1440）を使っています。これぐらいあればまあ十分です。![Screen Shot 2014-12-23 at 14.38.23 (2).png](https://qiita-image-store.s3.amazonaws.com/0/7465/bd08726c-ca7f-a803-f1f2-a37f616539b0.png "Screen Shot 2014-12-23 at 14.38.23 (2).png")
3. 多少はクセがある/慣れるまでに時間がかかる
  - RubyMineだから、というわけではなく、どんなツールでも同じだと思いますが、Vimから乗り換えてから1ヶ月ぐらいは「思ったように動かないので試行錯誤する」という時間が多かったです。クセがつかめると、「こういうときはこうすれば動く」というのがわかってくるんですけどね。

ぱっと思いつくのはこれぐらいですかね～。

もちろん欠点といえば欠点なんですが、RubyMineを使うと得られるメリットの方がはるかに大きいので、別のツールを使いたいかというとそういう気持ちは今のところありません。

## Railsアプリ開発時のワークフローが知りたい（？？？さん）
> RubyMineを使ったRailsアプリ開発時のワークフローが知りたい

すいません、ワークフローっていうのがちょっと何を指しているのかイメージが付きません。。。
とりあえず、rails newしてからHerokuのようなサーバーにデプロイする手順としてはこんな感じですかね。

1. Macのターミナルから[Rails Composer](https://github.com/RailsApps/rails-composer)を使ってrails newする
2. Macのターミナルから `rbenv local` でRubyのバージョンを指定する
3. `powder link` => `powder open` で、Pow経由でWebアプリにアクセスできるようにする
4. RubyMineを起動して、新しく作ったRailsアプリのディレクトリを開く
5. ここ以降は基本的にすべてRubyMineだけで開発に関連する作業を完結させる 
  - コードを書く
  - テストを書いて実行する
  - Railsのgeneratorでmigrationやscaffoldを作る
  - db:migrateのようなrakeコマンドを実行する
  - bundle installやbundle updateを実行する
  - Gitにコミットする
  - GitHubにpushする
  - Gitでbranchを切り替えたりマージしたりする
6. Herokuへのデプロイは [heroku_san](https://github.com/fastestforward/heroku_san) gemを利用する
  - デプロイ用のコマンド（ `bin/rake staging deploy` など）はRubyMineのターミナルから実行する

もし知りたかった内容と異なっていたらコメント等で詳しく教えてください。

## ControllerやViewを簡単に移動できる？（？？？さん）
> controller view間などの簡単な移動方法はありますか？
> rails.vimのようなのが理想です。

はい、 `Ctrl-Cmd-↑` で Model-View-Controller-Testを行き来できます！

![Screen Shot 2014-12-23 at 15.00.43.png](https://qiita-image-store.s3.amazonaws.com/0/7465/8487bcb7-ed61-a31f-0d92-e62aae0e77ef.png "Screen Shot 2014-12-23 at 15.00.43.png")

あと、@Aveneさんが紹介してくれているこのTipsもとても便利です。

[マニアックだけど超便利なコードジャンプ4つ](http://qiita.com/Avene/items/756c17f87d28d2ee47a4#%E3%83%9E%E3%83%8B%E3%82%A2%E3%83%83%E3%82%AF%E3%81%A0%E3%81%91%E3%81%A9%E8%B6%85%E4%BE%BF%E5%88%A9%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%974%E3%81%A4)

## Pow/Powderでもデバッグしたい（@jnchitoさん）
> RubyMineからPow/Powderで実行中のアプリをデバッグ実行する方法が知りたい。

これは僕が挙げた質問ですね。
この質問には@spring_akiさんが回答となる記事を書いてくれました。
どうもありがとうございます。助かりました！

[RubyMineでPowを使いながらDebugする方法](http://qiita.com/spring_aki/items/8319af8ec12b444f167b)

## Rails runnerでデバッグしたい（@t_oginoginさん）
> rails runner Xxx.yyy
のように、スケジュール組んで動かすようなメソッドをデバッガで動かす方法が知りたいです。

この質問は@t_oginoginさん自身が回答してくれました。どうもありがとうございます！

[RubyMine初心者が定期実行させるJobのデバッグに挑戦](http://qiita.com/t_oginogin/items/17662d1addeafdd5b94d)

あと、別のアプローチとしては

- Modelにスケジューラーで実行させたいロジックを書く
- Modelのテストを書く
- テストをデバッグ実行する

というふうにするとデバッグできるだけでなく、テストも一緒に書けて一石二鳥かもしれません。
（特殊なプログラムだとテストが書きづらい、というケースもあるかもしれませんが）

## RubyMineが動いているところを動画で見てみたい（そこのあなた）

> スクリーンショットだけでなく、実際に使って動かしているところを見てみたいです。

・・・とあなたが考えているかもしれないので、こんな記事を投稿してみました。

[動画（スクリーンキャスト）で学ぶRubyリファクタリング（＋RubyMineのTips集）: divide_equally編](http://qiita.com/jnchito/items/70444c5ef4fe26bb997c)

この記事の中で紹介している動画を見ると、実際に僕がRubyMineを操作している様子を確認することができます！

## まとめ：その他の情報源とか

というわけで、この記事ではみなさんからいただいた質問を僕がわかる範囲で回答してみました。

QiitaのRubyMineタグには意外とたくさんのTipsが載っているので、他に何か疑問があるときはまずQiitaで探してみると良いかもしれません。
（RubyMineタグをフォローすると新着情報がキャッチできてさらに良いです！）

http://qiita.com/tags/rubymine

自力で解決できない場合は、Facebookの「JetBrails IDE コミュニティ」で質問してみるのが良いかもしれません。
このコミュニティには僕も参加しています。

[JetBrains IDE (IntelliJ IDEA 等) コミュニティ](https://www.facebook.com/groups/178583459014413/)

他にも最近公開されたスタック・オーバーフローを使ったりすると誰かが回答してくれるかもしれませんね。

[スタック・オーバーフロー](http://ja.stackoverflow.com/)

ちなみにIntelliJ IDEAやPhpStormなど、JetBrains社製IDEは共通の機能や共通の設定を持っている部分が多いです。
RubyMineで検索しても目的の情報が見つからない場合は他のIDEの情報を探してみるのも良いかもしれません。

あと、RubyMineで困っていたことを解決できた場合はぜひQiitaや自分のブログでそのHow-toを公開してください！
きっとそのHow-toは他のみんなも知りたがっているHow-toだと思うので。
特にRubyMineに関する日本語の情報はまだまだ少ないので、貴重な情報になると思います。

今回僕が書いた記事もどこかの誰かの役に立ってると信じています。
役に立ったと思った人はぜひポチッとストックしてやってください！
よろしくお願いします ^^

### あわせて読みたい

RubyMineアドベントカレンダー2014にはRubyMineに関する便利情報がたくさん載ってます。
まだ読んでない方はぜひチェックしてみてください！

[RubyMine Advent Calendar 2014](http://qiita.com/advent-calendar/2014/rubymine/)