質問: Ruby on Railsチュートリアルを見ながらcloud9で勉強してる初学者です。 すべてのgemを最新にしようと思い、バージョン指定している箇所すべて消してbundle update しました。 この後、アップデートはちょっとずつ確認しながら行うものと知りました(;_;) gemのアップデートは特にエラーなく終了しましたが、 bundle exec rspec すると先頭のエラーが見えないほど大量のエラーが出ました。 ``` An error occurred while loading ./spec/system/users_show_spec.rb. Failure/Error: require File.expand_path('../config/environment', __dir__) NoMethodError: undefined method `delete' for nil:NilClass ``` エラーを解消出来たら良いのですが、原因が分からないので いったん元の状態に戻したいと考えました。 作業は、gitブランチを新規作成しその中でGemfile編集とbundle updateしました。ステージング前の状態です。 このような場合、どういう手順で戻せるでしょうか? 単純にgit masterに戻ればアップデートしたgemも元の状態に戻るのでしょうか? それともgit masterからgemの再インストールが必要でしょうか? その場合の手順はどうなるでしょうか?
回答: 使用される gem のバージョンは `Gemfile` と `Gemfile.lock` の内容によって決めるようになっているので、`Gemfile` と `Gemfile.lock` を何らかの手段 (ブランチを `master` に戻す、`git restore`, `git reset --hard`, `git stash`, などなど) で元に戻せば、元のバージョンの gem が使えます。 gem をアップデートしても、消さない限りは古いバージョンのものも残っているので、再インストールしなくても動くと思います。 もし消えてしまっていても、再度 `bundle install` すれば元のバージョンの gem が再度インストールできるので心配はいりません。