4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails初心者が知っておきたい基礎知識|gem、Bundler など…

Last updated at Posted at 2020-02-13

この記事では、《Rails初心者が知っておきたい基礎知識》について、
業務を通して学習した内容をまとめています。

  • gem とは…?
  • Gemfile とは…?
  • Gemfile.lock とは…?
  • Bundler とは…?

こういった疑問についてまとめています。

※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。

##gem とは…?
books-918521_1920.jpg

__『gem』__は・・・

Rubyのライブラリ(パッケージともいいます)です。

__『ライブラリ』__とは…
プログラムの部品で、__便利な機能をひとまとめにしたもの__です。

ライブラリを利用することで、__自分で1からコードを書くことなく機能を実装することができるので、効率的に開発することが可能__です。

Rubyのgemには便利なものがたくさんあり、例えば…

  • Rails(Webフレームワーク)
  • Devise(ログイン機能)
  • Kaminari(ページネーション)
  • unicorn(アプリケーションサーバ)
  • Active Admin(管理画面)

などがあります。
gemを使うことでログイン機能やページネーションといった機能も、簡単に実装可能です。

##Gemfile とは…?

__『Gemfile』__は・・・

gemをインストールするための『設計書』のようなもので、基本的にこのGemfileに自分のアプリケーションに必要なgemを記述します。

##Gemfile.lock とは…?

__『Gemfile.lock』__は・・・

gemをインストールした後の『ログ、記録』のようなもので、インストールしたgemの一覧とバージョンが記載されています。

###【比較】Gemfile と Gemfile.lock の違い

Gemfile Gemfile.lock
更新方法 手動 自動
更新タイミング コマンド実行前 コマンド実行後
内容 インストールするgem インストールしたgem

【余談】なぜ Gemfile.lock が必要なのか…?

school-1.jpg

gemは、インストールした時期によってバージョンが変わってしまう可能性があるため…
例えば、__本番環境と開発環境でインストールされるgemのバージョンが異なってしまう可能性__があります。

しかし・・・

Gemfile.lockが使用するgemのバージョンを管理してくれるため、__仮にgemがアップデートされても、使用するgemのバージョンは変更させないということが可能__になります。

ちなみに・・・

Gemfile.lockを更新したい時は、bundle updateを使います。

##Bundler とは…?

__『Bundler』__は・・・

gemを管理するためのgemで、Bundlerを使用することで…

bundle install
bundle update

などのコマンドが使用できるようになります。

gem同士は関連し合っていることが多いので、実際はGemfileに書いてあるgemの他にも、gemが必要になります。

そこで・・・

Bundlerは、それらも自動でインストールし、Gemfile.lockに記述してくれます。

bundle_movement.png

Bundlerは、__特定のRailsアプリケーションに必要なgemパッケージをリストアップし、複数のコンピュータ間で簡単に同期が取れるようにするもの__です。

例えば・・・

上記の図のように開発者Bさんが、開発者AさんからRailsアプリのソースコードを受け取ったとします。

この時、Bさんはbundle installを実行するだけで、必要なgemをインストールすることができ、簡単に環境を構築できます。

###【一覧】 よく使う Bundlerコマンド のオプション

コマンド 概要
bundle init Gemfileを生成
bundle install Gemfileに記述したgemをインストール
bundle update インストール済みのgemのバージョンを更新
bundle list インストール済みのgemを一覧表示する
bundle exec Bundlerでインストールしたgemを使用して、
コマンドを実行

###【コマンド】 bundle install とは…?

bundle install

上記を実行すると・・・

Railsは、Gemfile.lockを元にgemのインストールを行います。

この時…

Gemfile.lockに記述されていなくて、且つGemfileに記述されているgem』

がある場合、__『該当するgem』と『該当するgemに関連するgem』をインストールした後、Gemfile.lockを更新__します。

反対に、Gemfile.lockに記述されていれば・・・

__そこに記述されたgemを見て、それがGemfileの内容に矛盾していない限り、Gemfile.lockの内容に従いインストール__します。

###【コマンド】 bundle update とは…?

bundle update

上記を実行すると・・・

Bundlerは、Gemfileを元にgemのインストールを行い、その後Gemfile.lockを更新します。

###【余談】上記2つのコマンドの使い分けを少し解説
camera-coffee-composition-1509428.jpg

bundle updateは・・・

その言葉通り、gemのバージョンを更新する時に使用します。

なぜなら・・・

bundle installコマンドでは、条件に矛盾が生じない限りGemfile.lockに存在するgemに関しては、更新作業を行わないからです。

bundle updateは、本番環境で安易に実行しないように注意しましょう。場合によっては、gemのバージョンにズレが発生し、クラッシュする可能性があります。

ですので・・・

bundle updateは、必ずローカル環境で実行してください。

また、bundle installに関しては・・・

__Gemfileに新しくgemを記述した際に使用__します。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?