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が更新される
という流れです。