gemのインストールとBundlerについて
これは7月に勉強した内容。最初難しかったのでまとめ。
環境:macOS Catalina / Ruby 2.7.1
gemとライブラリ
Rubyには大きくわけて
・組み込みライブラリ
・標準添付ライブラリ
・Gem
の3つのライブラリがある。
GemはRubyGems.orgで公開されている。自分で作成したgemをアップロードすることもできる。
gemのインストール方法
gem install gem名
でインストールする。
fakerというgemをインストールした例↓
バージョンを指定してインストールする場合はgem install faker -v 1.8.3
などと-vを付ける。また、rbenvなどでRubyのバージョンを切り替えている場合は、Rubyのバージョンごとにgemをインストールする必要がある。
Bundlerでgemを管理する
Bundlerはgemの依存関係を管理してくれるgemである。
gem install bundler
でBundlerをインストールする。
bundle init
を実行するとGemfileというファイルが作成される。
Gemfileの中身にgem 'faker'
などと使いたいgemの名前を追記して保存する。なお、GemfileもRubyを使ったDSLであるため、設定ファイルのように見えて実際はRubyのプログラムである。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem 'faker'
bundle install
を実行すると、Bundlerがgem同士の依存関係を判断しながら、Faker gemとそれに関するgemをインストールしてくれる。
Gemfileの中にgem名を追加するたびにbundle install
を実行すること。
Bundlerでgemをインストールした場合は、通常のコマンドの手間にbundle exec
を付けて実行すると、Bundleが管理する依存関係の中でRubyのコマンドが実行される。例えばirbを実行する場合はbundle exec irb
になる。
Gemfileと同じディレクトリにGemfile.lockというファイルが自動的に作成される。このファイルにはインストールされたgemのバージョンと各gemの依存関係が記述されている。Bundlerが自動で作成・更新するため編集してはいけない。