Ruby on Rails + Vagrant + Rubymine 環境構築

(コメント)

仕事では Python + Virtualenv + Django + Pycharm でやってるんですが、Rails を扱わないといけない案件が出てきたので環境を作りました。

Vagrant + 手作業で開発環境構築します。(慣れてきたらDocker で環境構築予定)

最初は rbenv なしで直接 Ruby の指定バージョンを ubuntu にインストールしようと思ってやってたのですが、rbenv なしだと逆に難しそうなので rbenv 使うことにしました。

Rubymine のダウンロード

Ruby on Rails IDE :: JetBrains RubyMine

Jetbrains Toolbox で入れると楽

Vagrant のダウンロード

Vagrant by HashiCorp

ディレクトリの作成

mac$ cd ~/workspace
mac$ mkdir rails-tutorial
mac$ cd rails-tutoria

Vagrantfileの作成

mac$ vagrant init rails-tutorial https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-i386-vagrant.box

Vagrantfile ができる

Vagrantfile の編集

▼この行のコメントアウトを外す

config.vm.network "private_network", ip: "192.168.33.10"

▼この行を追加

config.vm.synced_folder ".", "/var/rails/rails-tutorial"

▼この行を追加 (最後の方に)

config.vm.provision "shell", path: 'provision/vagrant-setup-root.sh'
config.vm.provision "file", source: "provision/.rbenvrc", destination: "/home/ubuntu/.rbenvrc"
config.vm.provision "file", source: "provision/vagrant-setup-ubuntu.sh", destination: "/tmp/vagrant-setup-ubuntu.sh"
config.vm.provision "shell", inline: "sudo --login --user=ubuntu /usr/bin/env bash /tmp/vagrant-setup-ubuntu.sh"

プロビジョニングスクリプトを作る

provision ディレクトリを作り、その中にファイルを作成

provision/.rbenvrc

# rbenv を有効にするためのスクリプト
# ドットコマンドで読み込む
export PATH=${HOME}/.rbenv/bin:${PATH}
eval "$(${HOME}/.rbenv/bin/rbenv init -)"

function runserver() {
cd /var/rails/rails-tutorial/rails-tutorial/
rails server -b 0.0.0.0 -p 8080
}

function debugserver() {
cd /var/rails/rails-tutorial/rails-tutorial/
rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 0.0.0.0 -p 8080
}

provision/vagrant-setup-root.sh

#!/usr/bin/env bash

if [[ ! -d /var/rails ]]; then
mkdir -p /var/rails
chown ubuntu:ubuntu /var/rails
fi

apt update -y
apt install -y git build-essential
apt install -y libssl-dev libreadline-dev zlib1g-dev

provision/vagrant-setup-ubuntu.sh

#!/usr/bin/env bash

ruby_version=2.4.0

[[ -d "${HOME}/.rbenv" ]] || {
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
}

grep .rbenvrc ${HOME}/.bashrc || {
echo '. ~/.rbenvrc' >> ${HOME}/.bashrc;
}

. ~/.rbenvrc

rbenv versions |grep ${ruby_version} || {
rbenv install ${ruby_version}
rbenv global ${ruby_version}
}

which rails || gem install rails

note: rbenv, ruby-build は、apt install rbenv ruby-build でもインストールできますが、バージョンが古いため選択可能な Ruby のバージョンが少なくなります。git clone でインストールした方が良いです。

ためしに起動

mac$ cd ..
mac$ vagrant up

note: 仮想マシンを再生成する場合は vagrant reload

note: プロビジョニングスクリプトだけ再実行する場合は vagrant provision

SSH で仮想マシンにログインしてみる

mac$ vagrant ssh

→ 入れる。

ubuntu$ ruby --version
ruby 2.4.0p0 (2016-12-24 revision 57164) [i686-linux]

Rails の初期環境を構築する

vagrant ssh でログインしてから

ubuntu$ cd /var/rails/rails-tutorial/
ubuntu$ rails new rails-tutorial

/var/rails/rails-tutorial/rails-tutorial/ ができる

これは、ホストのディレクトリをマウントしているので、ホストの rails-tutorial プロジェクトのディレクトリ以下に rails-tutorial ディレクトリ(つまり、~/workspace/rails-tutorial/rails-tutorial)ができているのがわかる。

デバッグ用 Gem の追加

/var/rails/rails-tutorial/rails-tutorial/の中に、Gemfile があるので修正。ホストPC側でも仮想マシン側でもどっちで修正してもいい。

仮想マシン用ライブラリのインストール設定

# gem 'therubyracer', platforms: :ruby

▲これのコメントアウトを外しておく

デバッグ用 gem をインストール設定

Gemfile に追記 ( group :development, :test do の中とかに)

gem 'ruby-debug-ide'
gem 'debase'

ライブラリを Bundle install する

vagrant ssh でログインしている状態で

ubuntu$ cd /var/rails/rails-tutorial/rails-tutorial/
ubuntu$ bundle install

→ ライブラリがインストールできる

テストサーバを実行

SSH で仮想マシンにログインしてから

ubuntu$ runserver

もしくは、ホストPC から

mac$ vagrant ssh -c ". ~/.rbenvrc; runserver"

テスト表示

http://192.168.33.10:8080/ にブラウザでアクセス

→見れる

リモートデバッグの設定

RubyMine でプロジェクトのディレクトリを開いて

メニューバーのRunEdit Configuration

+ を押す → Ruby remote dbug

Name: remote debug とか適当に

Remote host: 192.168.33.10

Remote port: 1234 のまま

Remote root folder: /var/rails/rails-tutorial

Local port: 26162 のまま

Local root folder: /Users/ytyng/workspace/rails-tutorial

→ OK クリック

デバッグサーバの起動

vagrant ssh で仮想マシンにログインしてから

ubuntu$ debugserver

もしくは、ホストPC から

mac$ vagrant ssh -c ". ~/.rbenvrc; debugserver"

デバッグサーバが起動したら、RubyMine から先程の remote debug 実行環境でデバッグ開始 RunDebug...remote debugdebug (メニューバーが表示さられている方は虫ボタン)

→ vagrant に接続しているターミナルに反応があります。

http://192.168.33.10:8080/ にブラウザでアクセス

→見れる。

これで、ブレイクポイントなど設置してデバッグ可能になっているはずです。

現在の評価: 5

コメント

最近のツイート

  • 漫画全巻ドットコム@ポイント最大15倍!

    漫画全巻ドットコム@ポイント最大15倍! @mangazenkan

    ytyng

    おはようございます!さぁ、いよいよ始まります!加藤浩次さん司会のがっちりマンデー!!が、はじまります!みなさん、うちの濱田、ダンディーが、映ります! https://t.co/YQj2zxafqe
    3 週間, 1 日 前

  • ytyng

    ytyng @ytyng

    漫画全巻ドットコム またテレビ出ます! がっちりマンデー。日曜日放送です。サーバ増やして待ってます! @mangazenkan https://t.co/cFVryVA7kG https://t.co/ia5rUMIIfw
    4 週間 前

  • ytyng

    ytyng @ytyng

    やばい、機能がリリースされない! タイムゾーンか? サマータイム設定になってるのか? とか焦ってたら、リリース日になってなかっただけだった。今日月末じゃん。月初じゃないじゃん。1人で焦ってたけど結果1日得した気分
    2 ヶ月, 3 週間 前