LoginSignup
1
1

【Rails】uninitialized constant Rack: :MiniProfiler の解決方法

Last updated at Posted at 2024-02-21

概要

この記事は、Railsアプリケーションのrspec実行時や、本番デプロイの際に、時々起こる uninitialized constant Rack: :MiniProfiler の解決方法について言及していきます。

エラー再現

エラーが起きる際の再現をしてみます。

注意点
よくあるパターンでやっているだけなので、違うパターンでも似たようなエラーを起きる可能性はあります。

development の環境で開発をしている際、左上に出る計測表示を消したくなったとします。
rails 左上 数字消す」みたいな感じで検索したとします。
その中で見つけた解決策を試してみます。

image.png

config/initializers 配下に rack_profile.rb を作成します。

rack_profile.rb
Rack::MiniProfiler.config.start_hidden = true

その後同じようにアプリを起動して左上を確認します。

image.png

「やったーー!! 邪魔者がいなくなったぞ!!!」

その後しばらく経って rspec を通そうとします。

Terminal
~ TodoApp $ bundle exec rspec spec/ --format documentation

そうすると下記のエラーが出て一個も rspec が通りません。

Terminal
NameError:
  uninitialized constant Rack::MiniProfiler
  Did you mean?  MiniMime

エラー原因

これは、 config/initializers 配下に rack_profile.rb を作成し、下記の記述をしているのが原因です。

rack_profile.rb
Rack::MiniProfiler.config.start_hidden = true

config フォルダは、アプリケーション起動時に読み込まれるようになっているのですが、 development 環境でも、test 環境でも同様に rack_profile.rb を読み込みに行きます。
そして、railsアプリケーションの作成時の Gemfile の状態では、 development 環境でのみ rack-mini-profiler を追加するという設定にしていると思います。
下記のような感じです。

Gemfile
group :development do

  (省略)
  
  gem 'rack-mini-profiler', '~> 2.0'
  
  (省略)
  
end

そのせいで、test環境でアプリが起動されると、rack_profile.rb を読み込んだ際に、 rack-mini-profiler って知らないぞ!!ってエラーが出てると認識しています。(解釈間違ってたらすみません。)

解決方法

解決方法はいくつかあります。

development環境でのみ読み込む。

作成してあった rack_profile.rb の記述を下記のように変更し、 development 環境でのみ設定が読み込まれるようにします。

rack_profile.rb
if Rails.env.development?
  Rack::MiniProfiler.config.start_hidden = true
end

rack-mini-profilerをそもそも追加しない

まずは、作成してあった rack_profile.rb は必要なくなるので、削除してください。
その後、Gemfileから、rack-mini-profilerの記述を消して、 bundle installします。

Gemfile
group :development do

  (省略)
  
-  gem 'rack-mini-profiler', '~> 2.0'
  
  (省略)
  
end

参考文献

おわりに

今回は、時々見るエラーについて解説をしました。
エラーを解決する際にその場の解決ではなく、恒久的な解決になるのかを意識するといいなと改めて感じました。
どこかの誰かのためになれば、幸いです。
余談ですが、Qiitaの記事にもできないようなしょうもない内容の記事を、自分のブログにあげていたりするので見ていただけると嬉しいです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1