仕事では Python + Virtualenv + Django + Pycharm でやってるんですが、Rails を扱わないといけない案件が出てきたので環境を作りました。
Vagrant + 手作業で開発環境構築します。(慣れてきたらDocker で環境構築予定)
最初は rbenv なしで直接 Ruby の指定バージョンを ubuntu にインストールしようと思ってやってたのですが、rbenv なしだと逆に難しそうなので rbenv 使うことにしました。
Ruby on Rails IDE :: JetBrains RubyMine
Jetbrains Toolbox で入れると楽
mac$ cd ~/workspace
mac$ mkdir rails-tutorial
mac$ cd rails-tutoria
mac$ vagrant init rails-tutorial https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-i386-vagrant.box
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
ディレクトリを作り、その中にファイルを作成
# 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
}
#!/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
#!/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
mac$ vagrant ssh
→ 入れる。
ubuntu$ ruby --version
ruby 2.4.0p0 (2016-12-24 revision 57164) [i686-linux]
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
)ができているのがわかる。
/var/rails/rails-tutorial/rails-tutorial/
の中に、Gemfile
があるので修正。ホストPC側でも仮想マシン側でもどっちで修正してもいい。
# gem 'therubyracer', platforms: :ruby
▲これのコメントアウトを外しておく
Gemfile に追記 ( group :development, :test do の中とかに)
gem 'ruby-debug-ide'
gem 'debase'
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 でプロジェクトのディレクトリを開いて
メニューバーのRun
→ Edit 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
実行環境でデバッグ開始 Run
→ Debug...
→ remote debug
→ debug
(メニューバーが表示さられている方は虫ボタン)
→ vagrant に接続しているターミナルに反応があります。
http://192.168.33.10:8080/ にブラウザでアクセス
→見れる。
これで、ブレイクポイントなど設置してデバッグ可能になっているはずです。
コメント