💎

【 Ruby&Rails 】環境構築でつまづいた話 loggerエラー

に公開

はじめに

久しぶりに「💎RubyonRails」でアプリケーションを作成したいと思い、環境構築を行いました。
過去昔のバージョンでアプリケーションを作成した経験はありますが「💎RubyonRails」から別途技術を集中して勉強していたため、久しく最新のバージョンでつまづきました。
非常に初歩的なトラブルになるのですが、備忘録として残します。

開発環境

OS: MAC M3 Sonoma
Ruby: 3.2.0
Rails: 7.0.8.7

エラー文

rails db:setup を使用としたら下記のエラーが出てきました。

uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger (NameError)

    Logger::Severity.constants.each do |severity|
          ^^^^^^^^^^

エラー文意味

結論から言うと、Ruby標準ライブラリの Loggerrequire されておらず、
ActiveSupportがそれを前提としているためにクラッシュしてしまった。

解決方法

config/boot.rbrequire 'logger' を追記しました。

ソースコード

# config/boot.rb

require 'logger'

エラーが起きた理由

RailsやActiveSupportは、Rubyの標準ライブラリの Logger を使う前提で動いてるのに、logger を require していなかったので起きたエラーです。

Logger とは?

Railsのログ機能を“安全に”管理するための仕組みの一部(内部処理)

バージョンによるエラー

Rails や ActiveSupport が、Ruby の標準ライブラリ Logger を「使う前提」なのに、うまく動かないのは不思議です。

調査をまして理由は、環境構築のバージョンが Logger NameError 問題が起きやすい構成 だったからだったので、私と同じバージョンを使用する際はご注意ください。

最後に

上記の対応で無事に rails db:setup を実行することができました。
バージョンにこだわりがないのであれば、バージョンを変えて実装でも良さそうな気がします。

参考サイト

uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger (NameError)

Discussion