Hit the books!!

プログラミング学習記録

gemのインストールとBundlerについて

これは7月に勉強した内容。最初難しかったのでまとめ。

 

環境:macOS Catalina / Ruby 2.7.1

 

 gemとライブラリ


Rubyには大きくわけて

・組み込みライブラリ

・標準添付ライブラリ

・Gem

 

の3つのライブラリがある。

 

GemはRubyGems.orgで公開されている。自分で作成したgemをアップロードすることもできる。

gemのインストール方法

gem install gem名でインストールする。

fakerというgemをインストールした例↓

f:id:ud_ike:20200903223215p:plain

 

バージョンを指定してインストールする場合はgem install faker -v 1.8.3などと-vを付ける。また、rbenvなどでRubyのバージョンを切り替えている場合は、Rubyのバージョンごとにgemをインストールする必要がある。

Bundlerでgemを管理する

Bundlerはgemの依存関係を管理してくれるgemである。

gem install bundlerでBundlerをインストールする。

f:id:ud_ike:20200903224631p:plain

 

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をインストールしてくれる。

f:id:ud_ike:20200903224950p:plain

Gemfileの中にgem名を追加するたびにbundle installを実行すること。

Bundlerでgemをインストールした場合は、通常のコマンドの手間にbundle execを付けて実行すると、Bundleが管理する依存関係の中でRubyのコマンドが実行される。例えばirbを実行する場合はbundle exec irbになる。

Gemfileと同じディレクトリにGemfile.lockというファイルが自動的に作成される。このファイルにはインストールされたgemのバージョンと各gemの依存関係が記述されている。Bundlerが自動で作成・更新するため編集してはいけない。

 

参考書籍