1.はじめに
Rubyには様々なライブラリが用意されており、Railsもその1つです。
Railsではライブラリをパッケージ化したgemというものを使用します。
今回はgemとbundleについて概念的なところをまとめてみました。
2.使用環境
- mac.os バージョン10.15.6
- Ruby 2.7.2
- Rails 6.1.3.1
- psql (PostgreSQL) 12.6
3.gemとは
ライブラリをパッケージ化したもの。
※ライブラリ:汎用性の高いプログラムを再利用できる形でまとめたもの。利用することで素早く生産的にプログラミングをすることができます。
3.1どんなgemがインストールされているか確認したい
gem list
で確認できます。
#プロジェクト内で確認したい場合
project_name % gem list
*** LOCAL GEMS ***
# gem名 (カッコ内はバージョン名) が表示される
...
3.2gemを追加したい
①Gemfile
というファイル(を作成し、)記述します。
# Gemfile(アプリケーション直下)上に記述
gem '追加したいgemの名前', 'バージョン(バージョンも指定する場合は入れる)'
# 例
gem 'rails', '~> 6.1.1'
②bundle install(もしくはbundle)
コマンドを入力するとGemfile.lock
というファイルが作成され、gemを使用することができます。
※サーバー起動中の場合はインストールされたgemを利用するためにサーバーの再起動が必要になります。
4.bundle(bundler)とは
bundleとは「束、かたまり」という意味です。プロジェクト内ではどのgemをどのバージョンで利用するのかが大事ですが、gemコマンドでは管理しきれません。
そこでBundler
というツールを利用します。
Bundlerはプロジェクトで使うgemを束ねて、どのgemのどのバージョンが必要か明示する仕組みです。
先ほどのbundle install(もしくはbundle)
はBundlerのコマンドです。
コマンドの一部を下記に示します。
#Bundlerを利用するにはインストールが必要
$ gem install bundler
#以後Gemfileにgemを追加した際はbundle installを行う
$ bundle install
# –path vendor/bundleをつけると特定のプロジェクト(ディレクトリ)にのみ導入される
$ bundle install –path vendor/bundle
# Bundlerが管理するgemを利用できる状態でコマンドを実行する
# Gemfile.lockに書かれているバージョンのgemが動き、その状態でコマンドの内容が実行される
$ bundle exec [コマンド]
# 初期状態のGemfileをカレントディレクトリに作成する
$ bundle init
# Bundlerが管理するgemのバージョンを更新する
$ bundle update
5.調べてみて
なんとなく使用していたgemとbundleについて整理することができました。
現在共同開発を行なっており、バージョン管理は重要だと感じているので、引き続き理解を深めていきたいと思います。
6.参考
書籍:大場寧子他, 現場で使えるRuby on Rails5速修実践ガイド, マイナビ出版, 2018.
7.最後に
記事の感想や意見、ご指摘等あれば伝えていただけるとありがたいです。
読んでいただき、ありがとうございました。