Windows 10でRubyの開発環境を用意したい
はじめに
Windows 10 Home Edition
にRuby
の開発環境を構築する方法の記録です。
RubyをWindowsへ直接インストールするのではなく、Windows上にLinux仮想マシンを構築し、Linux上にRubyをインストールします。
理由としては、Ruby on Rails
の開発環境としても使うことも想定していて、多くの場合、リリース先の本番環境はLinuxであると思ったからです。
今回は、Linuxをインストールする仮想マシンとしてVirtualBox
を使います。
また、仮想マシンの作成や管理を簡単にするためにVagrant
も使います。
環境について
使うもの
今回使うものは、主に以下です。
- OS: Windows 10 Home Edition
- VirtualBox 6.1.18
- Vagrant 2.2.14
- rbenv 1.1.2-44-gd604acb
- Ruby 2.7.2
- Linux仮想マシン
- OS: Amazon Linux 2
Home Edition
でもLinuxの実行環境にWSL(Windows Subsystem for Linux)を使う方法が可能になりつつありますが、僕の環境ではHyper-VとVirtualBoxの併用がうまくいかず断念しました。
作り方に興味がない人向け
こちらのGitリポジトリに一式あるので、cloneして、ディレクトリの中でvagrant up
してください。
使うツールの補足
VirtualBoxとは
本題とは関係ないですが、簡単に。
VirtualBoxは、Oracleの主導で開発されているオープンソースの仮想化ソフトウェアです。
これを使うことで、Windows
の中でLinux
などの他のOSを実行することができるようになります。
Vagrantとは
Vagrantは、仮想マシンの作成や管理を簡単にするためのツールで、HashiCorp社が開発しています。
Vagrantfile
という設定ファイルに書かれた内容をもとに、仮想マシンを起動、管理してくれます。
環境構築
環境を作成していきます。
以下のステップになります。
- 仮想化ツール(VirtualBox)とVagrantのインストール
- 仮想マシン(Amazon Linux 2)を作成する
- 仮想マシン(Amazon Linux 2)にrbenvをインストールする
- 仮想マシン(Amazon Linux 2)にRuby をインストールする
仮想化ツール(VirtualBox, Vagrant)のインストール
ここから環境構築に入ります。
詳細は割愛しますが、まずは仮想マシンをインストールします。
VirtualBoxは、ここから、Vagrantは、ここからインストーラーをダウンロードして入れます。
仮想マシン(Amazon Linux 2)を作成する
続いて、Linux仮想マシンを作成します。
ここからは、コマンドプロンプトを開き、WindowsでのCLI操作になります。
Windowsキー + R
を入力し、ファイル名を指定して実行
というウィンドウが出たら、cmd
と入力し、OK
をクリックするとコマンドプロンプトが開きます。
- 作業用のディレクトリを作成して、その中に入ります。
> mkdir ruby-on-amazon-linux-on-windows
> cd ruby-on-amazon-linux-on-windows
-
vagrant init
コマンドで、Vagrant設定ファイルのひな形を生成します。Vagrantfile
が作成されます。
> vagrant init bento/amazonlinux-2
-
vagrant up
コマンドで仮想マシンを作成・起動します仮想マシンイメージのダウンロードなども行うため、作成にそこそこ時間がかかります。
> vagrant up
-
vagrant ssh
で仮想マシンにログインし、起動を確認します。以下のような画面が出ればOKです。
> vagrant ssh
Last login: Wed Feb 17 15:25:07 2021 from 10.0.2.2
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
This system is built by the Bento project by Chef Software
More information can be found at https://github.com/chef/bento
[vagrant@vagrant ~]$
仮想マシン(Amazon Linux 2)にrbenvをインストールする
rbenv
をインストールします。
vagrantでLinuxにログインした状態で、以下を実行します。
- 必要なツールとライブラリをインストールします。
[vagrant@vagrant ~]$ sudo yum install -y git gcc openssl-devel readline-devel zlib-devel
- Githubからrbenvを取得してインストールします。
[vagrant@vagrant ~]$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
[vagrant@vagrant ~]$ cd ~/.rbenv && src/configure && make -C src
- Shellでrbenvコマンドを認識するように、設定ファイルにパスを登録します。
[vagrant@vagrant ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[vagrant@vagrant ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
- Shellの設定ファイルを再読み込みし、rbenvコマンドを認識するようにします。
[vagrant@vagrant ~]$ source ~/.bash_profile
[vagrant@vagrant ~]$ rbenv --version
rbenv 1.1.2-44-gd604acb1
ruby-build
プラグインをインストールし、rbenvでrubyをビルドできるようにします。
[vagrant@vagrant ~]$ mkdir -p "$(rbenv root)"/plugins
[vagrant@vagrant ~]$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
仮想マシン(Amazon Linux 2)にRuby をインストールする
rbenvの設定が終わったので、やっとRubyをインストールできます。
-
rbenv install
でRuby 2.7.2をインストールしてみます。結構時間がかかります。
[vagrant@vagrant ~]$ rbenv install 2.7.2
rbenv versions
でインストール済みのRubyのバージョンの一覧を見ることができます。
[vagrant@vagrant ~]$ rbenv versions
2.7.2
-
rbenv global
コマンドで、デフォルトで使用するRubyのバージョンを指定します。これで、
ruby
コマンドを実行できるようになります。
[vagrant@vagrant ~]$ rbenv global 2.7.2
[vagrant@vagrant ~]$ ruby --version
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
-
動作確認します。
rubyコマンドと、irbが使えるようになったことがわかります。
[vagrant@vagrant ~]$ ruby -e 'puts "こんにちは、Ruby!"'
こんにちは、Ruby!
[vagrant@vagrant ~]$ irb
irb(main):001:0> puts 'こんにちは、Ruby!'
こんにちは、Ruby!
=> nil
irb(main):002:0> exit
[vagrant@vagrant ~]$
おまけ1: ホストマシン(Windows)のファイルを見れるようにする
これで、Rubyのインストールまでおわりました。
しかし、このままだとWindowsで書いたRubyのコードをLinuxで参照することができないので、使いづらいです。
Windowsで作成したファイルをLinuxから参照できるようにVagrantの共有フォルダの設定を行います。
次のステップでフォルダを共有します。
- 共有フォルダに必要な
Vagrant
のプラグインをインストールする Vagrantfile
と同じフォルダにsrc
フォルダを作成するVagrantfile
に共有設定を追記する
手順
- vagrantから抜けてWindowsで作業します。
[vagrant@vagrant ~]$ exit
-
vagrant-vbguestプラグインが入っているか確認します。
以下となっていればのように、
vagrant-vbguest
が表示されていなければインストールする必要があります。
> vagrant plugin list
No plugins installed.
- vagrant-vbguestプラグインをインストールする
> vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching micromachine-3.0.0.gem
Fetching vagrant-vbguest-0.29.0.gem
Installed the plugin 'vagrant-vbguest (0.29.0)'!
> vagrant plugin list | Select-String "vagrant-vbguest"
vagrant-vbguest (0.29.0, global)
-
vbguestのステータスを確認します。
Host OSとGuest OSにインストールされているGuestAdditionsのバージョンがあっていないようです。
> vagrant vbguest --status
[default] GuestAdditions versions on your host (6.1.18) and guest (6.1.16) do not match.
- vbguestのバージョンを合わせます
> vagrant vbguest
- 設定を反映するため仮想マシンを再起動します
> vagrant reboot
- vbguestのステータスを再度確認すると、OKになっています
> vagrant vbguest --status
[default] GuestAdditions 6.1.18 running --- OK.
-
Vagrantfileにファイル共有設定を追加します
Vagrantfile
を開き、以下のコメントアウトされた行を変更します。
# config.vm.synced_folder "../data", "/vagrant_data"
以下のように、コメントを解除しWindowsマシン上の`src`フォルダをLinux上で`/home/vagrant/src`として参照できるようにします。
config.vm.synced_folder "./src", "/home/vagrant/src"
-
共有の確認のためのRubyスクリプトを
src
フォルダに作成します。Windowsでテキストエディター(メモ帳など)を開き、
src
フォルダにhello.rb
を以下の内容で作成します。
puts "こんにちは、Ruby!"
-
vagrantにログインし共有したフォルダを確認します。
src
の中でhello.rb
が共有されていることがわかります。
> vagrant ssh
[vagrant@vagrant ~]$ cd /home/vagrant/src
[vagrant@vagrant src]$ ls
hello.rb
[vagrant@vagrant src]$ ruby hello.rb
こんにちは、Ruby!
まとめ
長くなってしまいましたが、WindowsにRubyの実行環境を作ることができました。
今回の作業は一通り、こちらのGitリポジトリにある、Vagrantfile
で自動化できたので、今後再利用できるといいなぁと思います。