LoginSignup
0
1

More than 3 years have passed since last update.

普段 Ruby を使ってない人が Ruby の環境を構築する

Last updated at Posted at 2020-10-23

内容

普段 Ruby を使っていない人向けに Ruby の環境を構築するまでの工程を書く。Ruby プログラムを書く予定はないが、Ruby 製のアプリケーションを利用するために、 Ruby 環境を構築する必要があったのだが、検索しても分かりにくい記事やら明らかに内容が非 Ruby 書いてる人から見ても変なのばっかヒットするので、自分で書く。私は専門家でもなんでもないので、書いた内容の正しさは保証しません。

Ruby を使っている人が全然書いてくれない前提条件

本当の専門家はおそらくみんな知っているのだろうが、検索でヒットしないのが悲しい。

  1. OS に含まれるインタープリタ型プログラミング言語のインスタンス A と開発に使うインスタンス B が同じ A = B だと、B をカスタマイズすると A を含む OS が壊れるので、A ≠ B となるように B を別に用意するのが現代では一般的である。
  2. macOS(やその他多くの Unix-like システム) は Ruby を含む。
  3. rbenv が Ruby に対して前提条件1を実現するために存在する。
  4. Ruby のパッケージ(部品化された Ruby で書かれたプログラム)は gem と呼ばれている。
  5. gem を取り扱うプログラムの名前とコマンド名は gem である。
  6. gem にはそのまま gem 名のコマンドとして呼び出し可能なものがある。
  7. プログラム gem はパッケージ管理ソフトとしては(おそらく)機能が不十分である(と考えられている)。
  8. プログラム gem を補完し、パッケージ管理ソフトとするプログラム Bundler が存在する。
  9. Bundler は bundle という名前の gem であり、呼び出し可能である。
  10. コマンド bundle を実行すると現在のディレクトリ下の Gemfile という名前のテキストファイルの指示に従って様々な gem をインストールし、Ruby 環境を構成する。
  11. Ruby アプリケーションは1つの gem として提供される(ものもある)。
  12. 高度な Ruby アプリケーションは複数の Ruby アプリケーションの連携で構成される。
  13. 高度な Ruby アプリケーションを真面目に取り扱うならば、bundler を利用するのが自然である。

やること

前提条件を考えると、gem で提供される Ruby アプリケーションを真面目に使うには、

  • Ruby
  • rbenv
  • gem
  • bundler

を利用する必要があることが分かる。私は Fish Shell を使っているので、bash や Zsh 利用者とは異なる部分が含まれる。

  1. rbenv を Homebrew を通してインストールし、Fish 上で機能するように rbenv に指示された通りに謎の設定コマンドを Fish の設定ファイルに記述する。
  2. 最新の Ruby インスタンスをインストールする。
  3. インストールした Ruby インスタンスをシェルが呼び出す Ruby インスタンスに指定する。
  4. Ruby インスタンスに bundler をインストールする。
  5. やんなきゃ動かない謎のコマンド rbenv rehash を実行する。
#! /usr/bin/env fish

brew install rbenv
echo "status --is-interactive; and source (rbenv init -|psub)" >> $HOME/.config/fish/config.fish
rbenv install 2.7.2
rbenv global 2.7.2
gem install bundler
rbenv rehash

rbenv rehash は必要なのだが、なぜ必要なのかは理解していない。

Ruby アプリケーションのインストール

  1. 私は Asciidoctor で図形を楽に入れられるようにする Asciidoctor Diagram を利用したい。
  2. 私は私のユーザースペース全体でこのアプリケーションが機能すればいいので、ホームディレクトリ以下に ファイル Gemfile を作成し、そこに、gem の設定を記述し、bundler を動かす。
  3. やんなきゃ動かない謎のコマンド rbenv rehash を実行する。
#! /usr/bin/env fish

echo "\
source 'https://rubygems.org'
gem 'asciidoctor'
gem 'asciidoctor-diagram'
" > $HOME/Gemfile
bundle
rbenv rehash

こちらも同様に rbenv rehash が必要なのだが、なぜ必要なのかは理解していない。

あとがき

ただアプリケーションが動くようになった過程を書いただけなので、詳しい方の補足・訂正・批判を待っています。

0
1
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1