👻
ActionController::RoutingError (No route matches [GET] "/manifest.json
このエラー ActionController::RoutingError (No route matches [GET] "/manifest.json") は、Rails アプリケーションが manifest.json というリクエストに対するルートを持っていないために発生しています。
解決策
1. manifest.json を明示的に用意する
manifest.json は、PWA(Progressive Web App)やWebアプリのメタ情報を定義するためのファイルで、通常 public/manifest.json に配置されます。
手順
-
public/manifest.jsonを作成するtouch public/manifest.json - ファイルを編集して、以下のような内容を記述:
{ "name": "MyApp", "short_name": "MyApp", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#000000" } -
Railsを再起動
rails restart
これで、Railsは /manifest.json を public ディレクトリから提供できるようになります。
2. routes.rb に明示的なルートを追加する
もし public/manifest.json を置かずに manifest.json を動的に提供したい場合、routes.rb にルートを追加します。
手順
-
config/routes.rbを編集:get "/manifest.json", to: proc { [200, { "Content-Type" => "application/json" }, [File.read(Rails.root.join("app/assets/config/manifest.json"))]] } -
manifest.jsonをapp/assets/config/manifest.jsonに作成:{ "name": "MyApp", "short_name": "MyApp", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#000000" } -
サーバーを再起動
rails restart
3. sprockets-rails をインストール
エラーの原因として、sprockets-rails がインストールされていない可能性もあります。
手順
bundle add sprockets-rails
bundle install
その後、rails restart して動作を確認してください。
結論
-
public/manifest.jsonを作成するのが最も簡単な解決策。 - ルートを定義して
app/assets/config/manifest.jsonを動的に提供することも可能。 -
sprockets-railsが不足している場合はインストール。
まずは public/manifest.json を作成する方法から試してみてください!
Discussion