k-tokitoh

2019-04-07

もろもろメモ(rbenv, bundlerなど)

ごちゃまぜのメモ。

rbenv

参考にしたもの

各バージョンの ruby 実行ファイルはどこに保存されるか

version には global で指定する version が記載されている。

% cat /Users/takashi/.rbenv/version
2.3.3

versions 以下の各ディレクトリに、各バージョンの中身が入っている。

コマンドを打つとその場面で指定されているバージョンが実行される仕組み

.zshrc に以下を追記する。 これで例えば ruby というコマンドを打ったときに、もともとインストールされている/usr/bin/rubyよりも先に$HOME/.rbenv/shims/rubyが見つかる。 この shims の実行ファイルは、現在適用されている version における ruby コマンドを呼び出す。 例えば、/Users/takashi/.rbenv/versions/2.3.3/bin/rubyなどである。

上記の仕組みが成立するには、各バーションがもっているコマンドが漏れなく shims に存在せねばならない。 現在インストールされているバージョンたちを元にして、shims がコマンドたちを網羅するよう更新する作業が必要だ。 これを実現するのが、rbenv rehashというコマンドである。

バージョン切り替え

% cd
% rbenv version
2.3.3 (set by /Users/takashi/.rbenv/version)

% mkdir sample
% cd sample
% ls -a
. ..

% rbenv local 2.5.1
% rbenv version
2.5.1 (set by /Users/takashi/sample/.ruby-version)

% ls -a
. .. .ruby-version
% cat .ruby-version
2.5.1

gem 関係

% rbenv versions
system

- 2.3.3 (set by /Users/takashi/.rbenv/version)
  2.5.1
  % gem env home
  /Users/takashi/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0

% rbenv local 2.5.1
% gem env home
/Users/takashi/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0

プラクティス

gem をアプリケーションごとに分けて管理する方法

Rails のアプリケーションごとに gem を管理する

% mkdir sample-app
% cd sample-app
% bundle init

Gemfile に rails を記載

% bundle install --path=vendor/bundle
% bundle exec rails new . --skip-bundle(or -B)

tree

パッケージ管理ツール

よく知らんかった用語たち