この記事では,プログラミング初学者による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というgem1.2.3以上のバージョンを指定しています。つまり,存在するバージョンのうち1.2.3以降の最も新しいバージョン(例えば1.2.41.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以外の使いたいgemGemfileに記述し,

bundle install

でインストールします。

GemfileとGemfile.lock

作成したアプリケーションのディレクトリ直下にGemfileGemfile.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が更新される

という流れです。