0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【rails】Rails 8のallow_browser modernによる開発者モードでのエラーの解決方法

Posted at

はじめに

こんにちは。アメリカ在住で独学エンジニアを目指している Taira です。
rails8 を使用して Rails アプリを作成しているのですが、開発者モードで UI を確認していたらエラーが発生しました。
どうやら、application_controller.rbにデフォルトに作成されるallow_browser versions: :modernが原因でした。
本日は推測される原因や解決策について記事にしようと思います。


allow_browser versions: :modernの意味

allow_browser は Rails 8 で追加された新しい DSL(Domain-Specific Language:ドメイン固有言語) で、指定したブラウザーのバージョン以下のアクセスを拒否するための機能です。
なお、allow_browser versions: :modern は Chrome, Safari, Firefox などの最新バージョンを指し、それ以外の古いブラウザを拒否

class ApplicationController < ActionController::Base
  allow_browser versions: :modern
end

開発者モードでエラーが起こる原因

Chrome などのブラウザで 開発者モードを有効にしていると、ブラウザの User-Agent が特殊なものとなり、Rails 側でモダンブラウザとして認識されない場合があります

そのため development 環境でも allow_browser を設定すると、開発者モードからのアクセスで拒否され、エラーになります。


解決策

私は以下のように「本番環境のみ」適用するよう修正しました:

class ApplicationController < ActionController::Base
  if Rails.env.production?
    allow_browser versions: :modern
  end
end

この設定により、development や test ではエラーが発生せず、本番環境でのセキュリティ強化だけを実現できます。


結論

項目 内容
意味 allow_browser versions: :modern は古いブラウザを拒否する Rails 8 の新機能
原因 開発者モードの Chrome などで User-Agent が特殊になり拒否される
解決策 if Rails.env.production? で本番のみ適用する
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?