IntelliJ IDEA 13.1 + Ruby plugin 6.5.0.20140314 DE リモートインタプリタ Rails開発

ちょっと前まで結構buggyな印象だったリモートインタプリタですが、最近のバージョンは安定してるっぽいです。

- ホスト
  - IntelliJ IDEA 13.1
  - Ruby plugin 6.5.0.20140314
- ゲスト
  - Ubuntu 14.04 LTS
  - ruby 2.1.2 (rbenv)

## What's リモートインタプリタ？

IntelliJ IDEA で開発中のプロジェクトを、リモートホスト上のインタプリタで動作させる機能です。

リモートホストであるにも関わらず、実行やコンソール（rails c）、rakeタスク、rspecなどを SSH ごしに IDEA から操作でき、実行結果やログ等をシームレスに取得可能です。

Windows 上の IDEA で Rails 開発を行う場合はほぼ必須といっていい機能で、開発用サーバを Vagrant 等で管理する場合にも使える機能です。（vagrant用の設定プリセットもあって楽です）

よいとこ

 - Windows 上で Rails 開発という苦行から解放してくれる
 - 開発用サーバと本番用サーバの OS、ライブラリ等を揃えやすい

微妙なとこ

 - `bundle install`実行後など、ローカルでのスタブの作成などに時間がかかる
 - `git checkout`など、リモートに全体を転送する必要があり規模によっては時間がかかる
 - リモートと言ってもやはりローカル上の仮想マシンでないと転送コストが馬鹿にならない

##手順

 1. リモートホスト上でrubyインストール
 2. Railsアプリケーション作成
 3. IDEA上でDeployment先登録
 4. IDEA上でリモートインタプリタ登録
 5. プロジェクト作成
 6. 転送設定
 7. Railsアプリケーションダウンロード
 8. bundle install
 9. 開発サーバ起動

さらに･･･[デバッガの使用](http://qiita.com/uzuki05/items/668669e139bcf4772176)

###リモートホスト上でruby/railsインストール

なんでもよいですが今回はrbenvで。

    uzuki05@dev $ rbenv install 2.1.2
    uzuki05@dev $ rbenv global 2.1.2
    uzuki05@dev $ gem install rails -v=4.1.1 --no-ri --no-rdoc
    uzuki05@dev $ rbenv rehash

###アプリケーション作成

IDEA上で作成しようとすると、エラーが発生するので、リモートホスト側で作成しておきます。IDEAプロジェクト作成後、IDEAの同期機能でホスト側に取り込みます。

    uzuki05@dev $ rails new hoge --skip-test-unit


###IDEA上でDeployment先登録

[Configure] > [Settings] > [Deployment]

でリモートホストの接続情報を登録。先に登録しておくことで次のリモートインタプリタ登録で接続情報入力を省略できます。

![Deployment](http://i.imgur.com/asjmF4f.png)

###IDEA上でリモートインタプリタ登録

[Configure] > [Project Defaults] > [Project Structure]

[Add New SDK] > [Ruby SDK] > [New Remote] 

[Fill from deployment server settings]から先ほど登録した接続情報を自動設定できます。

![Configure Remote Ruby Interpreter](http://i.imgur.com/1aPSnzL.png)

[OK]を押すと、インストール済みのgemの情報を取得したりするので、インストールされているgemの数によってはしばらく待ちます。

登録できたら[OK]。

![Project Structure](http://i.imgur.com/hwT8CdQ.png)

###プロジェクト作成

![New Project](http://i.imgur.com/5I4AI7t.png)

![Create](http://i.imgur.com/WaIYUvW.png)

###転送設定

[Tool] > [Deployment] > [Configuration]

左ペインで登録したデプロイ先を選択し、[Mappings]タブを開きます。

- [Use this server as default]有効に
- [Deployment path on server `デプロイ先名`]は作成したRailsアプリのルートディレクトリ

![Deployment Configuration](http://i.imgur.com/U28tIBd.png)


続いて、

[Tool] > [Deployment] > [Options...]

- [Upload changed files automatically to the default server]を「On explicit save action」

![Deployment Options](http://i.imgur.com/UldtUlE.png)

###Railsアプリケーションダウンロード

左のProjectペインで、[プロジェクト名（ここでは「hoge」）を右クリック] > [Deployment] > [Download from デプロイ先名]

![Download from](http://i.imgur.com/e8xPqig.png)

IDEAにより、リモートホスト上から生成されたRailsアプリが取り込まれます。

![Download](http://i.imgur.com/jJ74vFP.png)

###bundle install

[Tools] > [Bundler] > [Install]

###開発サーバ起動

[Deployment: プロジェクト名]実行。

![Development server](http://i.imgur.com/61I1nUv.png)

無事リモートホストでサーバが起動しました。

![Development log](http://i.imgur.com/dGhGXpA.png)

VirtualBoxはポートフォワーディングが楽ですね。

![App](http://i.imgur.com/UECv1E2.png)


##Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

`therubyracer`を入れればOK。


Gemfile

    # 追記
    gem 'therubyracer', '~> 0.12.1'

リモートホストに転送（「On explicit save action」の設定で保存時に自動転送されているはずです）後、

[Tools] > [Bundler] > [Install]

で無事インストール完了。


次回は、リモートインタプリタでデバッガを使ってみます。
→[IntelliJ IDEA 13.1 + Ruby plugin 6.5.0.20140314 DE リモートデバッグ on Rails](http://qiita.com/uzuki05/items/668669e139bcf4772176)