Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
32
Help us understand the problem. What is going on with this article?
@Avene

Railsリモートデバッグ(RubyMine+Vagrant) @Windows10 Technical Preview

More than 5 years have passed since last update.

Windows PCでRails開発環境を作ったのでメモ。

VagrantでつくったVMでRailsを立ち上げて、RubyMineからデバッガを接続します。RubyMineを使うとGUIからデバッグができるので、開発や問題解決の効率を上げることができます。

環境

  • ホストOS
    • Windows10 TC Build 9860
    • RubyMine RM-139.160
    • VM Oracle Virtual Box 4.3.12
  • ゲストOS
    • CentOS 6.5 x86-64
    • ruby 2.1.2p95 (2014-05-08 revision 45877) x86_64-linux (rbenv でインストール(rbenv 0.4.0-129-g7e0e85b))
    • Rails 4.1.7

概要

  • Rails環境を、VagrantのSynced Folder(/vagrant)の下に作成
  • RubyMineにて、Rails Applicationプロジェクトを新規作成する。このとき上記フォルダをRootとして設定
  • Deployment設定で、ホストのプロジェクトとゲストのRailsアプリケーションディレクトリを関連づけ
  • ホストのRubyランタイムをプロジェクトのリモートSDKとして登録
  • RubyMineで一度Bundle Installを実行
  • デバッグできる!

手順

Rails環境

Vagrant upしてから、ゲストOSにログインして、VagrantのSynced Folderの下に作ります。今回は/vagrant/projectをRailsのRootフォルダにしました。

(環境構築の手順は省略します。)

以下のような構成になりました。

[vagrant@vagrant project]$ pwd
/vagrant/project

[vagrant@vagrant project]$ ls -ltr
total 18
-rwxrwxrwx 1 vagrant vagrant  478 Nov  1 02:31 README.rdoc
-rwxrwxrwx 1 vagrant vagrant  249 Nov  1 02:31 Rakefile
-rwxrwxrwx 1 vagrant vagrant  154 Nov  1 02:31 config.ru
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:31 app
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:31 bin
drwxrwxrwx 1 vagrant vagrant 4096 Nov  1 02:31 config
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:31 db
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:31 lib
drwxrwxrwx 1 vagrant vagrant 4096 Nov  1 02:31 public
drwxrwxrwx 1 vagrant vagrant 4096 Nov  1 02:31 test
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:31 vendor
-rwxrwxrwx 1 vagrant vagrant 1358 Nov  1 02:35 Gemfile
-rwxrwxrwx 1 vagrant vagrant 2896 Nov  1 02:36 Gemfile.lock
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:37 tmp
drwxrwxrwx 1 vagrant vagrant    0 Nov  1 02:37 log

[vagrant@vagrant project]$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

[vagrant@vagrant project]$ which ruby
/usr/local/rbenv/shims/ruby

RubyMine プロジェクト作成

ホストOSに戻ってRubyMineを起動。Create New Project。
project_creations.PNG
注意点は2つ。

  • Project Type
    • Rails Application を選びます。
  • Location
    • ゲストOSで作ったRailsのRootディレクトリを選びます(Synced Folder下に作ったはずなので、ホストOSから選択できるはず)。 以下の例では、centos6.5-ruby-readyがSynced Folderです。その下のprojectがRailsのRootディレクトリなので、それを選びます。

project_directory_selection.png

Deployment設定

で、ホストのプロジェクトとゲストのRailsアプリケーションディレクトリを関連づけ
プロジェクト作成後、RubyMineが立ち上がったらまずDeploymentの設定をして、ホストOSのプロジェクトフォルダとゲストOSのRailsディレクトリを関連づけます。

Tools → Deployment → Configrationsでウインドウを開き、

左上の+アイコンをクリックして新規作成後、ConnectionタブにてVagrantの環境に接続します。Root Pathは/vagrantを指定します。

deployment_config_connection.png

Mappingsタブにてディレクトリの関連づけ。

Local pathとDeployment path on server 'XXXXXX'のディレクトリを合わせます。

deployment_config_mappings.png

Ruby SDKの設定

ホストのRubyランタイムをプロジェクトのリモートSDKとして登録します。

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

+アイコンを押して、new Remote…

settings_sdk.png

ラジオボタンでDeployment Configlationを選択。Ruby Interpreter pathにてリモートのRubyバイナリを選択します。rbenvをつかってるので、 /usr/local/rbenv/versions/2.1.2/bin/ruby

settings_sdk_selection.png

RubyMineにGemをDownload

RubyMineで一度Bundle Installを実行すると、どうやらホストOSのRubyMineのキャッシュにGemがダウンロードされるようです。これをやっておかないとRubyMineからデバッグが起動できませんでした。

bundle_install.png

以上でRubyMineでデバッグをする準備は完了です。

試しにデバッグしてみる

せっかく作ったので本当にデバッグできるか、適当にScaffoldを作って試してみましょう。

Scaffold

ActionからScaffoldを選んで、適当にモデルとフィールドを指定して作成します。

scaffold.png

db:migrate

Scaffoldを作っただけではDBができていないので、Actionからdb:migrateを実行します

db_migrate.png

デバッグモードでサーバ起動

Run → Debug… でデバッグメニューを開いて
run_debug.png

Developmentのデバッグを選択します
debug.png

以下のようにコンソールが表示されれば、デバッグモードでサーバが起動しています。
debug_start.png

デバッグ!

indexにブレークポイントを張ってアクセスしてみます

ブレークポイントはほかのIDE等と同じで、エディタ行の左枠外?をクリックすれば配置できます。
breakpoint.png

ブラウザからURLにアクセス
access_server.png

ブレークポイントで処理が止まりました。変数の中身も確認できます。
debugging.png

32
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Avene
logbar
Ringというデバイスを開発しているスタートアップ

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
32
Help us understand the problem. What is going on with this article?