RailsチュートリアルGemfile編集(3章〜7章)


はじめに

Railsチュートリアルの3章以降を読んで、GemfileとGemfile.lockを更新しました。
1、2章までの環境構築は、rails new から heroku openまで
でまとめていますので、ご覧ください。

Gemfileの更新

チュートリアルで指定されているGemfileを使わず、最低限のみを編集して3章に挑みました。
具体的には、rails new から heroku openまで
でまとめている通り、sqlite3とpgを編集しています。

しかしチュートリアル3.6でminitest等が出てくるため、Gemfileに不足していた下記5行を追加することに...

  gem 'rails-controller-testing', '1.0.4'
  gem 'minitest',                 '5.11.3'
  gem 'minitest-reporters',       '1.3.8'
  gem 'guard',                    '2.16.2'
  gem 'guard-minitest',           '2.4.6'

しかし、これでgit push herokuをやるとエラーが出ました...
「Failed to install gems via Bundler.」

とりあえず下記コマンドを実行

% bundle update

はい、もちろんエラーです。
1、2章の環境構築の際も上手く行きませんでしたから、当たり前ですね。

調べていくとこちらの記事に辿り着きました。
bundle install しようとしたら ruby のバージョン違くてコケた話
記事を参考に下記コマンドを実行しました。

% rbenv exec gem install bundler
% rbenv rehash

その後に再び下記を実行。

% bundle update

今回は成功しました🎉

その後もう一度、git push herokuを実行すると、
デプロイ成功です!!
1、2章の環境構築から上記コマンドを実行していれば良かったのかなと少し後悔中...

Gemfile.lock

ちなみに今回の取組前後でGemfile.lockを比べて見ると、かなり違いがあることが判明しました。
差分が分かるように左に変更前、右に変更後のファイルを置いて比較しました。





これだけGemfile.lockのデータが違うとは...
bundlerのバージョンについては下記記事を参考にしました。

RailsをHerokuにデプロイするときのBundlerバージョン(2020年版)

5章

4章では上記のGemfileで問題は起きませんでした。

5章ではGemfileにbootstrap-sassの追加が必要になりました。
Railsチュートリアル5章のリスト5.5の通りに、Gemfileに

gem 'bootstrap-sass', '3.4.1'

を追加し、

% bundle install

を実行。
無事インストールできました!

6章

6章ではGemfileにbcryptの追加が必要になります。
5章と同じように下記一行をGemfileへ追加し、bundle installを行いました。

gem 'bcrypt', '3.1.13'
% bundle install

無事インストールできました!

7章

7章ではGemfileのbyebugを使いますが、現段階で私のGemfileは下記のようになっています。

gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]

バージョンが固定されていないので、下記のように書き足しました。

gem 'byebug', '11.0.1', platforms: [:mri, :mingw, :x64_mingw]

そして

% bundle install

無事インストールできました!

7章の7.5で、config/puma.rbconfig/database.ymlのファイル変更がありますが、チュートリアルと一切同じにするのではなくて最低限のみ合わせました。
とりあえずはこれでエラーなしでした。
チュートリアルのファイルは公式からご覧ください。

※8章以降も随時更新していきます!