Ruby on Rails Tutorial の学習をローカルの仮想環境 (VirtualBox + Linux Mint) で進めるための環境構築

Ruby on Rails Tutorial では、開発環境として AWS Cloud9 というクラウドIDEサービスを推奨している。環境構築不要で進められるというメリットもあるが、自分の好きなエディタを選んだりすることはできない。そこで、ローカルで開発を進めるための環境構築手順をまとめる。

概要

Windows 10 に VirtualBox + Linux Mint をインストールし、仮想環境で開発を進められる状態を構築する。

環境

手順

以下を順番にインストールしていく。

VirtualBox

以下からダウンロードしてインストールする。

64bit 版の Linux Mint をインストールする場合、BIOS から CPU の仮想化技術を有効化しておく必要がある。

Linux Mint

以下から ISO ファイルをダウンロードする。

VirtualBox仮想マシンを作成する。タイプとバージョンは以下を指定する。

作成した仮想マシンの "設定 > ストレージ > 光学ドライブ" より、ダウンロードした ISO を選択する。

これで普通のコンピュータに Linux をインストールするのと同じ仮想環境ができるので、起動して Linux Mint をインストールする。

設定メモ

Guest Additions をインストールする。"デバイス > Guest Additions CD イメージの挿入" を選択し、以下コマンドを実行する。

# Guest Additions のインストール
$ sudo /media/user/VBox_GAs_5.2.20/VBoxLinuxAdditions.run

ユーザのディレクトリ名を英語に変換する。

# ユーザのディレクトリ名を "日本語 => 英語"
$ LANG=C xdg-user-dirs-gtk-update

プログラミング用フォント Ricty を生成する。生成したフォントは /usr/share/fonts/ 配下に置くと追加される。

# 生成したディレクトリからフォントを移動
$ sudo mv *.ttf /usr/share/fonts/truetype/

VirtualBox の共有フォルダを設定する。ホスト側で仮想マシンの "設定 > 共有フォルダー" より共有するフォルダを設定する。ゲストOS側で利用できるようにするには vboxsf グループにユーザを追加する必要がある。

# ゲストOS側でvboxsfグループにユーザを追加
$ sudo gpasswd -a USERNAME vboxsf

rbenv + ruby-build

Ruby のバージョンを切り替えられるようにするために、rbenv と ruby-build をインストールする。

rbenv

# rbenvをクローン
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

# rbenv高速化のためにbashの拡張をコンパイル
$ cd ~/.rbenv && src/configure && make -C src

# 環境変数へ追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile

# セットアップのコマンドを実行
$ ~/.rbenv/bin/rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

# 自動でrbenvを読み込む設定を追加
$ echo 'eval "$(rbenv init -)"' >> ~/.profile

# 設定ファイルを反映
$ source ~/.profile

# バージョンが表示されるかを確認
$ rbenv -v
rbenv 1.1.1-39-g59785f6

ruby-build

# plugins ディレクトリを作成
$ mkdir -p ~/.rbenv/plugins

# 作成したディレクトリに ruby-build をクローン
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

# インストール可能なバージョン一覧を表示
$ rbenv install --list
Available versions:
  1.8.5-p52
  1.8.5-p113
  1.8.5-p114
  1.8.5-p115
...

Ruby

# 現在の安定版 (2.5.1) をインストール
$ rbenv install 2.5.1
The Ruby openssl extension was not compiled.
The Ruby readline extension was not compiled.
The Ruby zlib extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `apt-get install -y libssl-dev libreadline-dev zlib1g-dev` to fetch missing dependencies.

# ライブラリが不足していたので、指示通りにインストールする。
$ sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev

# 再度実行
$ rbenv install 2.5.1
Downloading ruby-2.5.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2
Installing ruby-2.5.1...
Installed ruby-2.5.1 to /home/user/.rbenv/versions/2.5.1

# インストールされたか確認
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

折角rbenvを入れたので、別のバージョンと切り替えてみる。

# 別のバージョン (2.4.4) をインストール
$ rbenv install 2.4.4
Downloading ruby-2.4.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.bz2
Installing ruby-2.4.4...
Installed ruby-2.4.4 to /home/user/.rbenv/versions/2.4.4

# インストールされているバージョンの一覧を確認
$ rbenv versions
* system (set by /home/user/.rbenv/version)
  2.4.4
  2.5.1

# バージョンの切替 (2.4.4を指定)
$ rbenv global 2.4.4

# 現在のバージョンを確認
$ rbenv version
2.4.4 (set by /home/user/.rbenv/version)

$ rbenv versions
  system
* 2.4.4 (set by /home/user/.rbenv/version)
  2.5.1

# 実際のバージョンを確認
$ ruby -v
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]

Rails

まず、Gemのインストール時にドキュメントをインストールしないよう設定する。

# Gemのインストール時にドキュメントをインストールしないよう設定
$ printf "install: --no-rdoc --no-ri\nupdate:  --no-rdoc --no-ri\n" >> ~/.gemrc

RubyGems.orggem-install には、--no-rdoc--no-ri は非推奨なので -​-document を使えと書いてある。そのうち -​-document の方に統一されるかもしれないので注意が必要である。

設定したら、Railsと実行に必要なものをインストールする。

# Railsのインストール
$ gem install rails -v 5.1.6

# バージョンの確認
$ rails -v
Rails 5.1.6

# SQLite3のインストール
$ sudo apt-get install libsqlite3-dev

# Node.jsのインストール
$ sudo apt-get install nodejs
$ sudo apt-get install npm

Editor (VS Code)

公式サイトからdebをダウンロードして以下のコマンドを実行する。

$ sudo dpkg -i <file>.deb
$ sudo apt-get install -f # Install dependencies

設定ファイルの共有には、Setting Syncという拡張機能を使うと便利。