ライブラリ
Ruby には大きく分けて 3 つのライブラリがある
- 組み込みライブラリ
- 標準添付ライブラリ
- Gem
1. 組み込みライブラリ
- Integer, String, Array, Hash など
2. 標準添付ライブラリ
require
メソッドを実行してライブラリを読み込むJSON
といったクラスが事前に用意されている
3. Gem
- 使う前に事前のインストールが必要
require
メソッドを実行してライブラリを読み込む- rubygems.org というサイトで利用可能な形で公開されている
- 10 万を超える数のライブラリが公開されている
Gem の使い方
インストール gem i Gem名
- すでにインストール済みの Gem を再度インストールしても問題はない
gem i Gem名
# or
gem install Gem名
gem i awesome_print
# awesome_print → 引数に渡したオブジェクトを見やすく表示する
インストール済みの Gem を確認 gem list
- インストール済みの Gem 一覧とそのバージョン情報を表示
gem list
Gem 読み込み require Gem名
require Gem名
require "awesome_print"
ap [1, 2, 3]
インストールしたはずの Gem が動かない
- インストールしたはずの
pry
が動かないgem list
では確かにインストール済み- 公式を見ても、コマンドラインから
pry
で動くはず
% pry
zsh: command not found: pry
rbenvというrubyのパッケージマネージャを使用していると、gemでインストールしたコマンドを使う前にrbenv rehashをして $HOME/.rvm/shims 以下の情報を更新する必要があるらしい。
% rbenv rehash
% pry
[1] pry(main)> p [1, 2, 3]
[1, 2, 3]
=> [1, 2, 3]
Bundler
- 複数の Gem をまとめてインストールできる
- 基本的に標準でインストールされている(Ruby 2.6.0 から標準添付)
- インストールされていなければ
gem i bundler
- インストールされていなければ
bundle -v
でバージョン確認
Bundler で複数の Gem をまとめてインストール
- 大まかな手順
- Gemfile の作成
bundle install
実行
1. Gemfile の作成 bundle init
Gemfile
という名前のファイルを作成し、そこにインストールする Gem を書く
bundle init
→ Gemfile が作成される- Gemfile にインストールしたい Gem を追記する
% bundle init
# Writing new Gemfile to /Users/username/Gemfile
% c Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
# gem "rails"
- 例として
pry
という Gem をインストール- pry は irb の後発プログラムで、表示が見やすく、多くの機能を持つ
% vi Gemfile
~
% c Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem "pry"
2. bundle i
実行
bundle i
# or
bundle install
Gemfile.lock ファイル
bundle install
を実行すると、自動で Gemfile.lock というファイルが生成される- 使われている Gem 名とそのバージョンが記載されている
- 編集の必要はない
- Gemfile と Gemfile.lock はセットで使われるため、プログラムのファイル一式をバックアップする際などは両方を保管する
- 公開されている Ruby プログラムに Gemfile が入っている場合は、
bundle install
を実行してからプログラムを実行する- 多くの場合、ドキュメントにその旨が記載されているが
- 当たり前の動作でもあるため、ドキュメントから省略されていることもある
Gem をバージョンアップ bundle update
- Gemfile に書かれている Gem に新しいバージョンがリリースされたときは、以下実行で新しいバージョンの Gem をインストールできる
- Gemfile.lock の内容も更新される
bundle update
bundle update Gem名
とすることで、その Gem と Gem が依存している Gem をまとめてバージョンアップできる
指定したバージョンの Gem を使う bundle exec
- 新しいバージョンの Gem をインストールしたとき
- 古いバージョンの Gem はアンイストールされない
- 同じ Gem の複数のバージョンがインストールされた状態になる
- 古いバージョンの Gem はアンイストールされない
- 通常は新しいバージョンが利用される
Gemfile.lock
に書かれたバージョンの Gem を使って実行したい場合、以下のコマンドを使う
*ここよく分からない
bundle exec