前回のDockerfileに続いて今回はGemfile,Gemfile.lockについて解説していきます。
Dockerfileについて確認したい方は以下を参照してください。
Gemfile
GemfileとはインストールするGemを定義しておくためのファイルになります。
GemとはRuby用のライブラリを管理できるもので、Gemのライブラリ(パッケージ?)を使うことで自分で一から作る必要がなく開発スピードをアップしたり、バグが少なくできる利点があります。
早速ですが、Gemfileの中身を確認してみましょう。
まず1行目ですが、Gemのダウンロード先のURLを記載しています。
2行目は「rails」の「5.0.0.1」を指定してインストールするように記載しています。
source 'https://rubygems.org'
gem 'rails', '5.0.0.1'
このGemfileのあるディレクトリで「bundle install」コマンドを実行することで、RailsのGemをダウンロードしてインストールすることができます。
Gemfile.lock
Gemfileと違いGemfile.lockは空のファイルで、直接編集を行いません。
「bundle install」コマンドを実行した場合に、実際にインストールされたGemとそのバージョンが自動的にGemfilelockに記載されます。
Gemfilelockの用途
Gemfilelockの用途としては、自分以外の開発者が別の環境で同じアプリの開発を行う場合などに、同じGemを使用しないとバグが発生したりする可能性があるので、同じバージョンのGemを使用する必要があります。
その場合にGemfileに記載している情報を元に「bundle install」を実行すると、下記で説明している依存関係を解決した様々なGemがインストールされるので、実際にインストールされたGemが記載されているので、それを別の環境に持っていき「bundle install」を実行するとGemfile.lockに記載されているGemと全く同じものがインストールされるため、同じライブラリ環境で作業ができるということです。
Gemの依存関係
Gemfileに記載して「bundle install」を行うとGemfileに記載されたGemがインストールされると言いましたが、その際に記載されたGemを動かすために必要な記載されているGemと別のGemも同時にインストールされます。
このようにあるライブラリを動作させるために別のライブラリを必要になることを依存関係と言います。
Gemのインストール時には自動的にこの依存関係を解決してくれて、関係する様々なGemがインストールされます。依存関係を含めて何がインストールされたか全てGemfile.lockに記載されています。
コメント