RubyMineでVagrantのRailsをリモートデバッグする


Vagrantで作ったrailsの環境をRubyMineに設定することで、RubyMineからrails serverを実行したり、デバッグのステップ実行ができたりします。仕組みとしてはRubyMineからリモート環境にSSH接続して、リモート環境のインタープリタを使用します。

前提

  • rbenvを使っています。
  • ポートフォワーディングを下記のように設定している状態です。
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.network "forwarded_port", guest: 80, host: 9080, host_ip: "127.0.0.1"
  config.vm.network "forwarded_port", guest: 3000, host: 9030, host_ip: "127.0.0.1"
end

リモート環境へのSSH接続に関する設定

VagrantのSSHログイン情報の確認

下記でSSHログインに必要な情報が表示されます。

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User ubuntu
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/endoy/vagrant/ubuntu/default/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

Deploymentの設定

Connection

File > Settings > Build, Execution, Deployment > Deployment > Connection

+ボタンで追加し、上記で確認した情報を入力します。

Mappings

File > Settings > Build, Execution, Deployment > Deployment > Mappings

使用するインタープリタの設定

File > Settings > Languages & Frameworks > Ruby SDK and Gems

+で追加して、リモートで使用しているインタープリタを設定します。

下記のRuby interpreter pathは、/home/ubuntu/.rbenv/shims/rubyではなく、/home/ubuntu/.rbenv/versions/2.4.0/bin/rubyの方のパスを使う必要があります。そうでないとGemが読み込まれません。

Run/Debug Configurationsの設定

rails serverにコントローラの変更が反映されない場合

Vagrantの設定によるかもしれませんが、コントローラを変更してもrails serverを再起動しないと変更が反映されないことがあります。その場合、config/environments/development.rbを下記のように変更すると反映されるようになります。

#config.file_watcher = ActiveSupport::EventedFileUpdateChecker
config.file_watcher = ActiveSupport::FileUpdateChecker

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