(番外編) ゼミナール Ruby 開発環境の構築(macOS) - BYOD PC のセッティング(17)

はじめに

(注意) この記事は小林研究室に所属するゼミナールのための記事なので、3年生は読み飛ばして欲しい。

今年度ゼミナール所属学生のうち、半数以上が macOS ユーザではなかった。macOS ユーザだったら、「Homebrew でこれだけ入れといてね」で済むのだが、Windows の場合にシステムを構築しようとするとかなり難しい。Windows の方では WSL を導入し、その中で開発環境を揃えようと思う(5月の大型アップデートが来たら WSL2 にする予定)。Windows の環境と合わせるように macOS 版も環境構築を実施しようと思う。

Ruby のインストール

macOS 自体にはすでに Ruby がインストールされている。

hkob@BYOD-macOS ~> ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

ただ、色々開発を行っているとシステムに入っている Ruby のバージョンが勝手に変わってしまって問題が発生することがある。そこで、通常は rbenv というシステムを使って環境ごとに個別に ruby をインストールする。

まず、Homebrew で rbenv と ruby-build をインストールする。

brew install rbenv ruby-build

インストールは普通に終わるのだが、以下のようなメッセージが表示されていることが確認できる。ruby のコンパイルの際に OpenSSL のライブラリとリンクする。何も設定していないと自動的にダウンロードしてインストールされるのだが、そのパッケージは更新されることがないので注意しろとのことである。OpenSSL は Homebrew で入れるので、環境変数を設定するように指示される。fish の場合として、~/.config/fish/config.fish に export の行を追加するとあるが、間違っているので後で修正する。

ruby-build installs a non-Homebrew OpenSSL for each Ruby version installed and these are never upgraded.

To link Rubies to Homebrew's OpenSSL 1.1 (which is upgraded) add the following
to your ~/.config/fish/config.fish:
  export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"

Note: this may interfere with building old versions of Ruby (e.g <2.4) that use
OpenSSL <1.1.

まず該当のファイルをエディタで記載する。もし、前に説明した Visual Studio Code をインストールしているなら、以下のコマンドでエディタを起動できる。

code ~/.config/fish/config.fish

前回、~/bin のバス設定を行なった下の部分に set -gx の文を追加する。他に何も記述していないなら、こんな感じになる。bash と違うのは $() ではなく () になること、"" が必要ないことなどである。

set -gx PATH ~/bin $PATH
set -gx RUBY_CONFIGURE_OPTS --with-openssl-dir=(brew --prefix openssl@1.1

現在動作中の fish はこの変更が反映されていないので、「.」コマンドで読み込んでしまう。~/bin のパスが多重化してしまうが大ごとにはならないので気にしないことにする。

. ~/.config/fish/config.fish

準備ができたので、Ruby のインストールを行う。現在利用できるものは 2.7 系なので何がインストールできるのか、rbenv install -l で確認する。大量に表示されるので grep で絞り込もう。これを見ると最新版は 2.7.1 であることがわかる。

hkob@BYOD-macOS ~> rbenv install -l | grep 2.7
1.8.6-p287
2.0.0-p247
2.2.7
2.7.0-dev
2.7.0-preview1
2.7.0-preview2
2.7.0-preview3
2.7.0-rc1
2.7.0-rc2
2.7.0
2.7.1
jruby-9.2.7.0
rbx-2.2.7
rbx-2.7
rbx-2.71828182

早速 rbenv コマンドで 2.7.1 をインストールする。

hkob@BYOD-macOS ~> rbenv install 2.7.1
Downloading ruby-2.7.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.bz2
Installing ruby-2.7.1...
ruby-build: using readline from homebrew
Installed ruby-2.7.1 to /Users/hkob/.rbenv/versions/2.7.1

デフォルトで使う Ruby を 2.7.1 に設定する。

rbenv global 2.7.1

シェル起動時に rbenv が有効になるように設定する。先ほど編集した ~/.config/fish/config.fish に追記をする。

set -gx PATH ~/bin $PATH
set -gx RUBY_CONFIGURE_OPTS --with-openssl-dir=(brew --prefix openssl@1.1)

# rbenv
rbenv init - | source

この行が追加できたら、再度読み込みを行う(やり方は上を参照)。この状態で ruby のバージョンを確認すると 2.7.1 になっていることが確認できる。

hkob@BYOD-macOS ~> ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]

その他

後日追記

hkob.hatenablog.com