macOS Monterey上にrbenvで Ruby on Rails開発環境を構築する

はじめに_

ここではUnix/Linuxコマンドを利用する。ターミナル上でUni/Linuxコマンドを入力することを以下のように表記している。冒頭の「%」はコマンド入力を表す。

% Unix/Linuxコマンド

たとえば、以下の表記はターミナル上で小文字のlsを打ち込み、Enterキーを押すことを表している。

% ls

以下の例はターミナル上で小文字のcalを入力し、スペースキーを入力後、半角英数字の2022を押して、Enterキーを押すことを表している。

% cal 2022

検証環境_

注意:CLangのバージョンについて(2021年10月28日追記)_

macOS付属のC言語/C++のコンパイラCLangのバージョンによっては、Rubyのインストールに失敗する場合があります。 バージョン11の場合は失敗するようです。

CLangのバージョン確認はターミナルで以下のコマンドにより確認できます。私の環境ではバージョン13です。

% clang -v
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: x86_64-apple-darwin21.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

CLangのバージョンは、コマンドラインツールをインストールすることでアップグレードできます。まずは以下のページを読んでコマンドラインツールのインストール方法を確認してください。

次にターミナルで以下のコマンドを実行し、コマンドラインツールをインストールしてください。

% xcode-select --install

Ruby_

Gitのインストール_

Rubyをrbenvを用いてインストールするためにバージョン管理システムGitを使用する。

% git --version
git version 2.32.0 (Apple Git-132)

rbenvのインストール_

GitHub: rbenv/rbenvを参考に設定する。

% brew update
% brew install ruby-build
% brew install rbenv
% which rbenv
/usr/local/bin/rbenv

rbenvの設定。シェル(ユーザからのコマンド入力を支援するソフトウェア)の設定ファイルに設定を記載する。

MacOSのバージョンによってシェルが異なり、シェルの設定ファイルも異なるので、適宜読み替えること。

  • Mac OS 12.00 Monterey: シェル zsh。設定ファイル.zshrc
  • Mac OS 11.00 Big Sur: シェル zsh。設定ファイル.zshrc
  • Mac OS 10.15 Catalina: シェル zsh。設定ファイル.zshrc
  • Mac OS 10.14 Mojave: シェル bash。設定ファイル.bash_profile
  • Mac OS 10.13 High Sierra: シェル bash。設定ファイル.bash_profile

以下の例はmacOS BigSurの例となる。まず、以下のコマンドでどのファイルに設定を書き込むのか確認する。

% rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init - zsh)"

ホームディレクトリにある.zshrcというファイルに「eval "$(rbenv init -)"」を書き込めと指示されているため、以下のコマンドにより書き込む。以下のコマンドにより、.zshrcの末尾に「eval "$(rbenv init -)"」を追記できる。

% echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc

書き込まれているか確認する。以下のように最後に「eval "$(rbenv init -)"」が表示されていれば、書き込み成功である。

% tail ~/.zshrc
〜途中省略〜
eval "$(rbenv init - zsh)"

設定を反映させる。

% source ~/.zshrc

rbenvの動きを確認する。

% which rbenv
rbenv () {
	local command
	command="${1:-}" 
	if [ "$#" -gt 0 ]
	then
		shift
	fi
	case "$command" in
		(rehash | shell) eval "$(rbenv "sh-$command" "$@")" ;;
		(*) command rbenv "$command" "$@" ;;
	esac
}


% rbenv -v
rbenv 1.2.0

% rbenv version
3.0.3 (set by /Users/gotoh/.rbenv/version)

rubyのインストール_

インストール時に必要となるその他のソフトウェアをインストールする。

% brew install libxml2 openssl readline
% rbenv install --list
2.6.9
2.7.5
3.0.3
3.1.1
jruby-9.3.3.0
mruby-3.0.0
rbx-5.0
truffleruby-22.0.0.2
truffleruby+graalvm-22.0.0.2

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

(2022年3月14日現在、最新版は3.1.1)

% rbenv install 3.1.1
% rbenv global 3.1.1
% rbenv rehash

% ruby -v
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-darwin21]

% which ruby
/Users/gotoh/.rbenv/shims/ruby 
(注:私の環境の場合は私のホームディレクトリ /Users/gotohの下にインストールされている。これはユーザ名ごとに異なる)

gemのバージョンを最新にする。

% gem update --system
% gem --version
3.3.9

Ruby on Rails_

yarnとNode.jpのインストール_

Rails6からwebpackerというものを使うようになる。このために必要なパッケージをインストールする。

% brew install yarn
% yarn --version
1.22.11
% node --version
v16.9.1

Ruby on Railsのインストール_

gemでライブラリーをインストールした際にドキュメントを生成すると時間がかかる。そこで、ドキュメントを生成しない設定にする。

% cd
% touch .gemrc
% echo "install: --no-document" >> .gemrc
% echo "update: --no-document" >> .gemrc

% more .gemrc
install: --no-document
update: --no-document

Ruby on Railsをインストールする。2022年1月10日現在、Rails 7.0.1がリリースされているが、1つ前のメジャーリリースの最新版の6.1.4.4をインストールする。

% gem install rails -v 6.1.4.4

% rails -v (注:エラーメッセージがでているが無視して良い)
mkdir: /usr/local/bin/../version_cache: Permission denied
/usr/local/bin/rbenv-communal-gem-home: line 21: /usr/local/bin/../version_cache/3.0.2: No such file or directory
Rails 6.1.4.1

動作確認をする。

% mkdir RailsTest
% cd RailsTest
% rails new demo --skip-bundle
% cd demo
% bundle install
% rails webpacker:install

Ruby on Railsの動作確認を行う。以下のコマンドで開発用Webサーバを起動する。

% rails server
mkdir: /usr/local/bin/../version_cache: Permission denied
/usr/local/bin/rbenv-communal-gem-home: line 21: /usr/local/bin/../version_cache/3.0.2: No such file or directory
=> Booting Puma
=> Rails 6.1.4.1 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.4.0 (ruby 3.0.2-p107) ("Super Flight")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 16958
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

Safariを起動し、http://127.0.0.1:3000/ にアクセスし、Ruby on Railsのメッセージが出ていたらインストール&設定成功している。なお、以下の画像のRubyおよびRailsのバージョンはこの例よりも古いバージョンである。

開発用Webサーバを停止させる。Ctrlキーを押しながら「C」のキーを押す(以下、この操作をCtrl-cと表記する)。

Ruby on Railsの開発環境には http://127.0.0.1:3000/ で経由でアクセスできる。

Scaffoldを使ってみる_

関係データベース(SQLite3)との接続を確認するためにRuby on RailsのScaffold(足場)という機能を使って、簡単な入出力アプリを作ってみる。

% rails generate scaffold person name:string age:integer
% rails db:migrate
% rails server

Webブラウザで http://127.0.0.1:3000/people にアクセスし、personの入力、閲覧、変更、削除ができるならば関係データベースとの接続は成功している。

このアプリケーションのデータベースはSQLite3を使っており、データベースファイルはdemo/db/development.sqlite3 にある。

エディタviの練習(もし、興味があれば)_

macOSの端末上における標準エディタはviである。ほとんどのUnix系システムでデフォルトで用意されているエディタであるviの基本的な使いかたを紹介する。なお、日本語入力の方法については今回は割愛する。

まずは、viが存在するかをチェックする。

% which vi

viを起動する。

% vi

viは編集モードと入力モードの2つのモードがある。Escキーを押すと編集モードになり、編集モードで「i」や「a」を押すと入力モードに入る。 とりあえず、文章を書いてみる。「i」を押して以下のように文章を打つ。

Hello World!

文章を打ち終ったらEscキーを押して、編集モードにする。ファイルに名前をつけて保存する。編集モードで「:w ファイル名」と入力する。

:w hello.txt

保存せず、終了する。

:q!

viでファイルを開く。

% vi hello.txt

入力モードから編集モードへの切り替え

  • ESCキー

編集モードにおける主なコマンド

  • i: 挿入。カーソル位置から入力する
  • a: 追加。カーソル位置の一文字次から入力する
  • o(スモールオー): 次の行から入力を始める
  • O(ラージオー):ひとつ前の行から入力を始める(行を新規に挿入する)
  • x: カーソルがある文字を削除。emacsで言うC-dと同じ働き。
  • dd: 一行削除(バッファ上には保存)。emacsで言うC-kと同じ働き。
  • h, j, k, l:それぞれ、左、下、上、右へ移動
  • 0(ゼロ):行の先頭へ移動
  • $:行の末尾へ移動
  • H:ターミナルに表示されている一番最初の行へ移動
  • L:ターミナルに表示されている最終行へ移動
  • y: カーソルのある行をコピー(バッファ上へ保存)
  • p: バッファ上の行を挿入
  • J:カーソルがある行と次の行を連結
  • u:アンドゥ(操作の取消し)
  • .(ピリオド):ひとつ前の操作を繰り返し実行
  • :wq:上書きして終了
  • :q!:保存せず終了
  • 参考:

戻る_