ライブラリ
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 listGem 読み込み require Gem名
require Gem名require "awesome_print"
ap [1, 2, 3]インストールしたはずの Gem が動かない
- インストールしたはずの
pryが動かないgem listでは確かにインストール済み- 公式を見ても、コマンドラインから
pryで動くはず
% pry
zsh: command not found: pryrbenvという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 installGemfile.lock ファイル
bundle installを実行すると、自動で Gemfile.lock というファイルが生成される- 使われている Gem 名とそのバージョンが記載されている
- 編集の必要はない
- Gemfile と Gemfile.lock はセットで使われるため、プログラムのファイル一式をバックアップする際などは両方を保管する
- 公開されている Ruby プログラムに Gemfile が入っている場合は、
bundle installを実行してからプログラムを実行する- 多くの場合、ドキュメントにその旨が記載されているが
- 当たり前の動作でもあるため、ドキュメントから省略されていることもある
Gem をバージョンアップ bundle update
- Gemfile に書かれている Gem に新しいバージョンがリリースされたときは、以下実行で新しいバージョンの Gem をインストールできる
- Gemfile.lock の内容も更新される
bundle updatebundle update Gem名とすることで、その Gem と Gem が依存している Gem をまとめてバージョンアップできる
指定したバージョンの Gem を使う bundle exec
- 新しいバージョンの Gem をインストールしたとき
- 古いバージョンの Gem はアンイストールされない
- 同じ Gem の複数のバージョンがインストールされた状態になる
- 古いバージョンの Gem はアンイストールされない
- 通常は新しいバージョンが利用される
Gemfile.lockに書かれたバージョンの Gem を使って実行したい場合、以下のコマンドを使う
*ここよく分からない
bundle exec