👻
ActionController::RoutingError (No route matches [GET] "/manifest.json
このエラー ActionController::RoutingError (No route matches [GET] "/manifest.json")
は、Rails アプリケーションが manifest.json
というリクエストに対するルートを持っていないために発生しています。
解決策
manifest.json
を明示的に用意する
1. 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
ディレクトリから提供できるようになります。
routes.rb
に明示的なルートを追加する
2. もし 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
sprockets-rails
をインストール
3. エラーの原因として、sprockets-rails
がインストールされていない可能性もあります。
手順
bundle add sprockets-rails
bundle install
その後、rails restart
して動作を確認してください。
結論
-
public/manifest.json
を作成するのが最も簡単な解決策。 - ルートを定義して
app/assets/config/manifest.json
を動的に提供することも可能。 -
sprockets-rails
が不足している場合はインストール。
まずは public/manifest.json
を作成する方法から試してみてください!
Discussion