Vagrant上のRailsアプリをRubyMineで開発・デバッグする
やりたいこと
- Ruby on Railsの学習(開発)環境を作りたい
- 普段はIntellijを利用しているので、RubyMine(Intellij)を使いたい
- Macの環境はあまり汚さず、Vagrant上に環境を作りたい
上記の事を実現するために、色々調べて実際に環境を構築してみました。
躓いた部分がいくつかあったので、自分用にメモ
こちらの記事をかなり参考にさせていただきました。
必要なもの
- RubyMine(有償)
- Vagrant
- Virtual Box
それぞれのインストール方法は省略。(rbenvとかも)
Macであればbrew caskとかで入れればOK
Windowsの場合はよくわからないので公式ドキュメントを参考に・・・
1.まずはVagrantのBoxを用意
今回は、rails-dev-boxを利用しました。
VagrantのBox作成@host
mkdir ~/Vagrant cd ~/Vagrant git clone https://github.com/rails/rails-dev-box.git cd rails-dev-box vim Vagrantfile
Vagrantfileにprivate_networkの設定を追加
# private_networkの設定 config.vm.network "private_network", ip: "192.168.33.11"
Vagrantのプロビジョニングと起動@host
vagrant up
2.Vagrant上で新たにRailsアプリを作成
VagrantにSSH接続@host
vagrant ssh
新規railsアプリ作成@vagrant
vagrant@rails-dev-box:~$ ruby -v ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-linux-gnu] vagrant@mkdir workspace vagrant@cd workspace/ vagrant@sudo gem install rails vagrant@rails _5.0.0.1_ new sample_app
Gemfileにリモートデバッグ用のGemを追加@vagrant
vagrant@cd sample_app/
vagrant@sudo vim Gemfile
Gemfile@vagrant
#以下の設定を追加 group :development, :test do gem 'ruby-debug-ide' gem 'debase' end
Bundleをインストール@vagrant
vagrant@bundle install #失敗したのでエラーメッセージ通りに以下のgemをインストール vagrant@sudo gem install ruby-debug-ide -v '0.6.0' vagrant@bundle install
3.VagrantのRailsサーバーを起動
rdebug-ideでRailsサーバーを起動する
指定するIPアドレスはVagrantfile
に指定したprivate_network
のIPアドレスを指定する。
今回の場合、192.168.33.11
railsサーバー起動@vagrant
vagrant@rails-dev-box:~/workspace/sample_app$ rdebug-ide --host 192.168.33.11 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 192.168.33.11 -p 3000
4.RubyMineで新規プロジェクト作成
まずはCreate New Project
を選択
ここではRailsのNew Applicationではなく、RubyのNew Applicationを選択
Location:プロジェクトのディレクトリ・プロジェクト名
Ruby SDK: RubyのSDK
を入力し、Create
↑のように新規にプロジェクトが作成される。
続いてVagrantへの接続情報を定義する。
Prefereces
-> Build, Execution, Deployment
-> Deployment
を選択
+
ボタンでAdd Server
メニューを開く。
Name:好きな名前
Type:SFTP
を選択してOK
Connection
タブで以下の情報を入力
SFTP host: 192.168.33.11
(Vagrantfileに定義したIPアドレス)
Port: 22
User name: vagrant
Password: vagrant
Test SFTP connection...
して接続できることを確認しておく。
続いてMappings
タブで以下の情報を入力
Local path: Macのプロジェクトのrootパス
Deployment path on server "Vagrant": vagrant上のRailsアプリのパス
入力が終わったらOK
続いて、ローカルとvagrant上のプロジェクトを同期する
Tools
-> Deployment
-> Sync with Deployed to Vagrant...
と選択する。
↑のように差分が表示されるので、Synchronize All
で同期する。
(▶▶みたいなボタン)
同期完了
続いてbundle install
Tools
-> Bundler
-> Install
を選択
※自分はsudoじゃないとパーミッションエラーとなってしまったので、Run with sudo
にチェックを付けて実行
bundle install 完了
続いてリモートデバッグ設定
Run
-> Edit Configration
を選択
+
ボタンを選択し、更にRuby remote debug
を選択
以下のようにリモートデバッグ情報を入力していく。
Remote host: 192.168.33.11
(Vagrantfileに設定したIPアドレス)
Remote port: 1234
(デフォルト値)
Remote root folder: vagrantのアプリケーションルート
Local port: 26162
(デフォルト値)
Local root folder: ローカルのアプリケーションルート
入力したらOK
適当にブレークポイントを置く
↑で設定したリモートデバッグ設定を選択して、虫のアイコンを選択
コンソールがConnectedになっていればリモートと接続OK
あとはhttp://192.168.33.11:3000/
のブレークポイントを設定した箇所にアクセスするとブレークポイントで停止してデバッグができる。
余談
rubyのSDKについて
Preferences
-> Languages & Frameworks
-> Ruby SDK and Gems
からRubyのバージョンを指定できる。
rbenvなどでVagrantとバージョンを合わせておくか、Vagrantの設定を読み込む。
Vagrantの設定を読み込むには、+
ボタン -> New Remote
でVagrantfileを選択すれば自動的に探して設定してくれる。
今回は以上。