1章 | 初学者によるRuby on Rails Tutorial学習記録
この記事では,プログラミング初学者によるRuby on Rails Tutorial学習中のつまずきを章別に共有します。一覧は次のページに用意しています。 はじめに | 初学者によるRuby on Rails Tutorial学習記録
1章の所感
1章については,まだつまずくことが少なかったです。Gemfileがまだブラックボックス化しているため,学習中に私が気になった点を一部補足しておきます。
Gemfile
バージョン指定
Gemfileは使用するgemの種類やバージョンを使用するために作成するファイルです。その中で使用する>=や~>という記号について補足します。
バージョンの表記方法について
まず,RubyやRailsに限らず,ソフトウェアのバージョンは
(メジャーバージョン).(マイナーバージョン).(パッチバージョン)
の形式で表記します。例えば,1.2.3というバージョンは,メジャーバージョンが1, マイナーバージョンが2, パッチバージョンが3であるバージョンを表します。
なお,メジャーバージョンは大きなアップデート,マイナーバージョンは小さなアップデート,パッチバージョンはバグの修正等があったときに更新されます。
>=
例えば
gem 'sample', '>= 1.2.3'
はsampleというgemの1.2.3以上のバージョンを指定しています。つまり,存在するバージョンのうち1.2.3以降の最も新しいバージョン(例えば1.2.4や1.3.0など)が使用されます。
~>
例えば
gem 'sample', '~> 1.2.3'
はsampleというgemのメジャーバージョンが1でマイナーバージョンが2以上のバージョン(例えば1.3.2など)を指定します。逆に言えば,メジャーバージョンが新しいもの(例えば2.1.3など)は使用されません。
bundle
まずbundleとは,gemの依存関係(例えばgemAを使うにはgemBが必要というような関係)を管理するためのものです。ややこしいのはbundle自身もgemであるということです。様々なgemを使うにあたり,bundleがない状態では他のgemを管理できないため,まずは
gem install bundle
でbundleをインストールします。その後,bundle以外の使いたいgemをGemfileに記述し,
bundle install
でインストールします。
GemfileとGemfile.lock
作成したアプリケーションのディレクトリ直下にGemfileとGemfile.lockというファイルがあるはずです。これらの役割について補足します。まず,Gemfileは(前述の通り),作成するアプリケーションに使用したいgemの種類とバージョンを人間が記述するためのファイルです。一方でGemfile.lockは,作成するアプリケーションに使用したいgemの種類とバージョン,その依存関係をbundleがメモしておくためのファイルです。したがって,基本的には人間がGemfileを編集することはあっても,Gemfile.lockを編集することはありません。Gemfile.lockを更新する際は,
bundle update
とします。 これまでの内容をまとめると,まず
gem install bundle \\bundleがインストールされる
次にGemfileを編集し,
bundle install \\Gemfileの内容に応じてgemがインストールされる
bundle update \\Gemfileの内容に応じてGemfile.lockが更新される
という流れです。