Ruby on Railsでbundle installでエラーが出た時のシンプルな解決方法

0

Ruby on Railsで初めてwebアプリケーションを作成していると悩まされるのがbundle install時のエラー。

Rails初心者の人で参考書通りに進んでいるのに、エラーが発生した!という人も多いのでは?

今回ははRuby on Railsのbundle install時にエラーが出た際の対処方法について紹介します。

 

そもそもbundle installとは?

Ruby on Railsでなにかアプリを作る時に、作るサイトによって様々な機能を追加することがあります。
Ruby on RailsではGemと呼ばれるものを追加することで、様々な機能をwebアプリケーションに追加することができます。

この時の作業の流れとしては、

GemfileにGemの記載を追加→ターミナル(コマンドプロンプト)でbundle install

という流れになると思います。この一連の流れはbundlerと呼ばれるgemに用意されたコマンド(bundle install)を実行しています。

簡単に言うと、bundlerはGemを管理するためのGemとも言い換えることができます。

 

このbundle installで「ハマる」ことがある

話しが脱線しそうなので元に戻すと、Gemを追加した後にエラーが出てくることは多々あります。

Ruby on Railsの勉強を始めた方で、参考者や学習動画サイト通りにbundle installをしているはずなのに、エラーが出るという経験をした方も多いのでは?

 

Rubyやgem、Ruby on Railsは日々バージョンが新しくなっています。

購入した参考書やネット上にある記事が古いものだと、バージョンが違ったりしてエラーが出て来ることはあります。

 

これが、参考書のソースコードをそのままコピペしているのにエラーが出て来る!という原因にもなります。

 

一例を挙げると、今回筆者の環境でGemファイルのバージョン指定をしてbundle installをすると下記エラーが発生しました。

 

これは一体どういったことが原因なのでしょうか?
このエラーを軸にRuby on Railsのbundle install時にエラーが出た際の解決方法について紹介します。

原因はバージョン指定によるもの

Ruby on Railsの初心者は参考書やネット上のサンプルコードなどを写経してRuby on Railsの勉強を始めると思います。

問題なければ、サクサクと進めるはずですがGemのバージョン指定がある場合には注意が必要です。

バージョン指定とは下記のようなコードを指します。

 

ここではsprocketsというGemのバージョン2.11.1でインストールするという意味です。

エラーメッセージも何やらsprocketsに関するメッセージが出てきていますね。

 

これはどういった意味でしょうか?下記で掘り下げて解説していきます。

 

bundle installでエラーが出た場合の対処方法

このエラーの場合、Gemfile.lockを削除することで解決します。

Ruby on Railsのファイルの中にあるGemfile.lockというファイルではGemのバージョン指定が管理されています。

なので、Gemfile.lockのファイルを削除してからもう一度bundle installをしてみましょう。(Gemfile.lockはRuby on Railsフォルダの中にあります。)

え?Gemfile.lockを削除しても大丈夫なの?と心配するかもしれませんが、大丈夫です。

Gemfile.lockはbundle installした後の結果を記したものです。削除し再度インストールを実行することで、また作成されます。
さっそく、Gemfile.lcokを削除し、再度bundle installを行うと問題なく完了しました。

 

Gemのバージョンには注意を

問題が解決すれば、なんだそんなことかと思うかもしれませんがRuby on Railsの独学者にはよくあるミスです。しかも一度ハマるとなかなか抜け出せない。

例えば、あなたがRuby on Railsに関する参考書籍を元に何かサンプルアプリケーションを作成している場合、記載されているGemのバージョンが古いなど様々な問題が絡んでいます。

なので、書籍通りのソースコードで実行しても当時とはバージョンが異なっているためにbundle install時にエラーが発生することもあります。

これを解決する方法としては、RubyGem.orgというサイトで最新のバージョンを確認してから使うのもエラーを回避する手段です。

Gemの確認はRubyGem.orgがオススメ

最新のバージョンを確認するため、また公式の説明を確認するためにも[RubyGems.org](https://rubygems.org)の利用をオススメします。

それでは実際にサイトに遷移してみましょう。
検索窓より任意のGem名を入力します。

今回は「sprockets」を入力してみました。
Gemの詳細ページに行くと、画面右側に「GEMFILE」と書かれた項目があります。

ここの黒いアイコンをタップすることで、コードをコピーすることができます。

 

あとは、このコピーしたコードをgemfileにペーストするだけで現時点で公式がサポートしているGemのバージョンを使うことができます。

また画面下側の「Homepage」と書かれたリンクをクリックすれば、そのGemについて詳しく書かれたGithubの公式ページにも遷移することができます。英語で書かれていますが、Gemについての説明や使い方などが説明されています。

おまけ

余談ですが、Ruby on RailsでGemをbundle installする場合にはターミナルに(コマンドプロンプト)

と記述していると思います。
しかし、

とだけ入力してもbundle installと同じアクションとなります。
細かいようですが、Ruby on Railsでアプリケーションを作成するとbundle installする機会は多いと思います。ぜひ時短に活用してください。

まとめ

今回、Ruby on Railsのbundle install時にエラーが出る時の対処方法について紹介しました。

まとめると、

・Gemfile.lockを削除してbudle installをする
・公式より最新のバージョンを利用する。
・もしくはバージョンを指定しない

こちらの方法で問題が解決するケースが多いです。ぜひ参考にしてみてください。









 

About Author

Comments are closed.