【 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標準ライブラリの Logger
が require
されておらず、
ActiveSupportがそれを前提としているためにクラッシュしてしまった。
解決方法
config/boot.rb
に require '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