インストールしていたRailsバージョンが原因でbundle installでエラーが出たときの解決方法

おもしろいWebサービスのアイデアが洪水のようにあふれて仕方ないので、プログラミングを勉強しています。実際にSNSを作りながら学べる「Ruby on Rails チュートリアル」に沿って勉強しているのですが、Railsのバージョンのせいで早々に壁にぶち当たってしまい、あたふたしながらなんとか解決したので忘れないようにメモしておきます。ちなみに、僕は第4版でやっています。

sponsored link

すごく初歩的なミスのせいで複雑に

今回、あたふたした原因はふたつありました。

  1. Macに最新のRailsをインストールしていた
  2. gemfileの書き換え後、保存が必要しなくてもいいと思い込んでいた

開発環境として「Cloud9」というWebサービスを使っているのですが、設定は自動で保存できるからファイルも同じ仕様なんだろうと思い込みしていたのがダメでした。早い段階で失敗できたので、すこしの違いでこんなにも結果が変わってしまうということが分かってよかったです。

参考:クラウドIDEサービス「Cloud9」で開発環境を作りRuby on Railsチュートリアル用に設定

Ruby on Rails チュートリアルとおりにgemfile書き換え

Railsのバージョンがチュートリアルでは5.0.3だったのに、5.0.4がインストールされていた件。サーバーを立ち上げてデフォルトのページを開いたときに一瞬時が止まりましたね。チュートリアルとおり進めたのに、どこをどう間違ったのかと。

いろいろいじってみるとMacに最新のRailsがインストールされていたのが反映されたんだと判明。でもバージョン指定してインストールしたはずやしなといろいろググっていると、ファイルを保存していなかったことに気づきました。

ファイルの保存方法ですが、Workspaceの「Gemfile」タブをクリックして、「Command+S」です。

コンフリクトしていたら迷わずbundle updateを

これでうまくいくかと思いきや、なぜか「Bundler could not find compatible versions for gem “activesupport”…」とエラーが出て「bundle update」してとのこと。

ちなみに、「bundle update」とはこういうことらしいです。

bundle updateはGemfile.lockの記述を無視して、GemfileでのGemの指定やそのバージョン指定などに基づいて、gemを更新する。 更新時にGemfile.lockを更新する。

引用:bundlerでの運用方法 – Qiita

いまいち理解できていなかったので、コマンドを実行するのがなんか怖いなと思ったのでググってたら、同じような症状な人がいました。まずは、gem listでバージョンを確認してみた。

これが実行した結果です。

activesupportがコンフリクトという症状を起こしていると推測。

コンフリクトとは、競合、衝突、対立、葛藤、緊張などの意味を持つ英単語。ITの分野では、複数の同種の何かが同じ資源を同時に利用しようとして競合状態になってしまうことを意味する場合が多い。

引用:コンフリクトとは – IT用語辞典

ということで案内とおりbundle update実行ー!!

エラーが出ていたactivesupportは、5.0.3となりました。

サーバーでRailsページを表示すると、チュートリアルとおりに表示されました。

参考にした記事:Rails5 でbundle installをするときにバージョンコンフリクトでつまったメモ – Qiita
参考にした記事:Railsチュートリアル(1~3章)をやった時のエラー解消 – himajin315の記録

さいごに

保存をし忘れたという初歩の初歩的なことが原因でした。もしチュートリアルとおりに表示されないときは落ち着いて問題解決していきましょう。と自分に一番言い聞かせておきます。もしくは、「teratail」で質問するべきやったかも。

参考:回答率9割超え!初心者や独学でのプログラミングの勉強にも役立つ無料のエンジニア特化型Q&Aサイト「teratail」

この記事が気に入ったら
いいね!しよう

Twitter で

AT HOME GEEKのLINE@スタート!

ブログのご意見ご感想をお待ちしています!

僕の得意分野は、カナダへの成人向け留学、将来のこと、ハタラキカタ、離婚問題(バツ1です)、ブログや人生の悩みなどなんでも大歓迎!どんどんお待ちしております!

友だち追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


こちらもオススメ!