Open6
gemの仕組み

Rubyにおけるライブラリの種類
標準ライブラリ(組み込みライブラリ)
String, Arrray, Hashなど
インストール: 不要
読み込み(require): 不要
標準ライブラリ(非組み込み)
csv, jsonなど
インストール: 不要
読み込み(require): 必要
外部ライブラリ
インストール: 必要
読み込み(require): 必要

gemとは
Rubyで使うために作られた外部ライブラリのこと。
.gem
という拡張子の1つのファイルに、いろんな処理がパッケージングされている。

RubyGemsとは
標準ライブラリ(組み込みライブラリ)の1つ。
gemのインストールなどができる。
gem install [Gem名]
とすると
rubygems.orgというgemの公開リポジトリから、入力された名前のgemを検索してインストールする。
.gem
ファイルにパッケージングされる前の、処理の中身を見たい場合は、該当のgemのページにアクセスし、GitHubのリンクをクリックすることで確認できる。

Bundlerとは
Gemfile
とGemfile.lock
という2つのファイルを使って、gemのバージョンや依存関係を管理してくれるgem。
- 使いたいgem名(必要ならバージョンも)を
Gemfile
に書く - ↑に書かれたgemと、依存関係にあるgemを全部リストアップして、それぞれどのバージョンをインストールするか決め、
Gemfile.lock
に書き込む -
Gemfile.lock
の情報をもとに、必要なgemを全てインストールする
こうすることで、
- 同じ
Gemfile
とGemfile.lock
を持っていれば、誰でも同じバージョンのgemをインストールすることができる - Gemfileという1つのファイルにgemを書くので、gemの管理がしやすい
- Gemfileを使ってアプリごとにgemを管理できる
などのメリットがある。

gemがインストールされる場所
デフォルトだと、今使ってるRubyがインストールされている場所に応じて決まる。
例えばrbenvを使ってRubyをインストールした場合は、以下のような場所にgemがインストールされる。
`~/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems
bundlerを使ってgemをインストールする場合には、--path
オプションを使って
$ bundle install --path vendor/bundle
などと書くことで、そのアプリのvendor/bundle
以下にgemをインストールすることができる。
/Users/tsubasanamatame/sample_app/vendor/bundle/ruby/2.7.0/gems