Open5

ChatGPTと相談しながらRailsチュートリアルをやっていくよ!

ピン留めされたアイテム
84san84san

このスクラップについて

基本的にはチュートリアル実行中に詰まったところや気になった点をメモしていきます!

スクラップの投稿目的

Railsの勉強をする時の備忘録として役に立つと聞いたので試しにやってみます。

どんなことを書いていく?

エラーが出て詰まった箇所と解決した方法や、チュートリアルを進めていて気になったところについて書いていく予定です。
最初のほうはChatGPTに残していたものから投稿します。

どうやって勉強しているの?

ChatGPTと相談しながらRailsチュートリアルを進めています!拙い言語能力を補ってくれるので非常に助かっています。
エラーが出たらChatGPTに相談しつつ、自分でも検索します。
ChatGPTには「こういうことかな?」と自分なりにまとめたことの確認や、学習中の独り言、ちょっと気になったことに対して返答してもらっています。

使っているPC

MacBook Air (2020, M1)

  • メモリ:8GB
  • OS(2025/02/01時点):Sequoia 15.3
84san84san

環境構築で詰まった その1

チュートリアルを参考にRailsのv7.0.4.3をインストールした後、rails -vでバージョンを確認しようとすると以下のエラーが発生しました。

'<module:LoggerThreadSafeLevel>': 
uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger (NameError)

どうやら1ヶ月程前にActiveSupportと依存関係があるconcurrent-rubyのバージョンが1.3.4→1.3.5に上がったらしく、その変更内容がエラーと関係しているみたいです。
v1.3.5でloggerへの依存を削除したからとかなんとか…(詳しいことはよく分かっていない)

ちなみに、この変更はRailsのv7.1.0以前のバージョンにも影響があるらしいです。
v7.1.0以上は解決済み。
https://x.com/sanfrecce_osaka/status/1879673273585406065

解決方法

以下のいずれかを実施すれば解決します。

  • concurrent-rubyのバージョンを1.3.4にする
    1. Gemfileにgem "concurrent-ruby", "1.3.4"を追記(または修正)
    2. ターミナルでbundle installを実行する
      concurrent-ruby v1.3.4を自動でインストールしてくれます
  • Railsのバージョンを7.1.0以上に指定してインストールする

個人的には、今後はRails v7.1.0以上を使う機会が増えるんじゃないかな…と思うので、2つ目の方法で進めていくことにしました。

参考

https://ja.stackoverflow.com/questions/100703/ruby-railsをインストールしてもエラーが表示される
https://qiita.com/Taira0222/items/89fe772eb8d752da4db7
https://stackoverflow.com/questions/79360526/uninitialized-constant-activesupportloggerthreadsafelevellogger-nameerror
https://rubygems.org/gems/concurrent-ruby/versions/1.3.5

84san84san

環境構築で詰まった その2

rails new コマンドの実行で以下のエラーが発生しました。

can't find gem bundler (= 2.4.19) with executable bundle (Gem::GemNotFoundException)

gem list bundlerを実行して今PCに入っているbundlerのバージョンを確認してみると…

*** LOCAL GEMS ***
bundler (2.5.6)

どうやらバージョン違いによる影響らしいです。元々の環境にはbundler v2.5.6が入っていました。
今回はチュートリアルに合わせてv2.4.19のbundlerを使用します。


解決方法

  • バージョン2.4.19のbundlerをインストールする
    1. ターミナルでgem install bundler -v 2.4.19を実行

もう一度gem list bundlerでバージョンを確認すると。

*** LOCAL GEMS ***
bundler (2.5.6, 2.4.19)

これで再度、rails new コマンドを実行したらうまくいきました!

84san84san

環境構築で詰まった 番外編1

bundle installを実行したらこんな感じのエラーが発生しました。

Fetching source index from https://rubygems.org/

Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/ due to underlying error <Errno::EHOSTUNREACH: Failed to open TCP connection to rubygems.org:443 (No route to host - connect(2) for "rubygems.org" port 443) (https://rubygems.org/specs.4.8.gz)>

Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/ due to underlying error <Errno::EHOSTUNREACH: Failed to open TCP connection to rubygems.org:443 (No route to host - connect(2) for "rubygems.org" port 443) (https://rubygems.org/specs.4.8.gz)>

Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/ due to underlying error <Errno::EHOSTUNREACH: Failed to open TCP connection to rubygems.org:443 (No route to host - connect(2) for "rubygems.org" port 443) (https://rubygems.org/specs.4.8.gz)>

Could not fetch specs from https://rubygems.org/ due to underlying error <Errno::EHOSTUNREACH: Failed to open TCP connection to rubygems.org:443 (No route to host - connect(2) for "rubygems.org"
port 443) (https://rubygems.org/specs.4.8.gz)>

"EHOSTUNREACH"はネットワーク、あるいはホストに到達できないというエラーです。
この時、たまたま図書館のフリーWi-Fiに繋いで作業していたのでそのせいだと思います。

ネットワークやセキュリティソフトによってはrubygems.orgへの接続がブロックされている可能性があるとかなんとか…(詳しいことはまだよく分かっていない)

一時的な回避策としてGemfileに記載しているsource "https://rubygems.org"の箇所を、https→httpに編集してもう一度bundle installを実行するとインストールができました。
インストール完了を確認したら即刻元のURLに戻しましょう。

ちなみに自宅に帰ってからsource "https://rubygems.org"の状態でbundle installを実行すると何事もなく普通にインストールできました。


後から調べると、以下記事のような方法もあったみたいです。
https://qiita.com/Tiima/items/3e33998de4bfad4eb829

84san84san

初めてRails(およびRuby)に触れた感想

  • 見やすい!
  • 書きやすい!!
  • 名前と場所さえ気をつければControllerとかViewとかの関連付けを自動でしてくれて楽!!

「Railsすごいぞ!」と思ったところ:規約に従うだけで動いてくれる

そう、名前と場所さえ守ればあとの関連付けはRails側でやってくれるのです。
Railsというものは、設定やら何やら考えるのが面倒な私のような人のための…
『面倒くさがりのためのフレームワーク』といっても過言ではないでしょう!!(知らんけど)