Ich habe eine Rails-App, die ich in der Produktionsumgebung testen möchte. Ich habe ausgeführt, RAILS_ENV=production rake assets:precompile
wodurch alle meine Assets in / public / Assets generiert wurden. Das Problem ist, dass beim Starten meiner App Folgendes RAILS_ENV=production rails s thin
angezeigt wird:
ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):
Diese Datei existiert jedoch unter /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css
.
Irgendwelche Gedanken darüber, warum ich das bekomme RoutingError
?
quelle
thin
auf meinem Entwicklungscomputer getestet habe. Ich habe die Assets kompiliert,application.css
war aber leer und das Serverprotokoll gab einen Fehler des OP aus.config.serve_static_files
.config.serve_static_assets
ist veraltet und wird in Rails 5 entfernt.Zusätzlich zu dem, was Ryan oben gesagt hat, beschreibt der Leitfaden zur Rails-Asset-Pipeline, wie Sie Apache oder Nginx so einrichten, dass die statischen Assets für Sie bereitgestellt werden.
http://guides.rubyonrails.org/asset_pipeline.html
Sie sollten Nginx oder Apache wirklich so einrichten, dass statische Assets bereitgestellt werden, da diese für diese Aufgabe viel besser optimiert sind als Mischlinge / Dünne / Einhörner.
quelle
Habe gerade das gleiche Problem gelöst. In meinem Fall war Ryans Antwort nicht hilfreich. Bratsche zeigte auf die Rails Guides, leider funktionierte das auch bei mir nicht. Die Ressource war jedoch hilfreich. Also nahm ich die Nginx-Konfiguration von dort und fügte die Root- Direktive hinzu, die auf das öffentliche Verzeichnis zeigte. Ohne das geht es nicht.
Starten Sie nginx neu und fertig.
quelle
In der Tat mussten Sie keine Standardkonfigurationen ändern. Sie kompilieren die Assets-Datei einfach erneut .
Öffentlichkeit / Vermögenswerte entfernen
Vermögenswerte kompilieren
quelle
Rails 4.2 hat diese Zeile in Ihren Dateien config / environment / staging.rb und Production.rb hinzugefügt / geändert:
Wenn RAILS_SERVE_STATIC_FILES nicht festgelegt ist und Sie Service-Assets von Ihrem Rails-Server sind (wie bei Unicorn), wird standardmäßig "false" verwendet, und der RoutingError tritt auf.
Dies ist eine einfache Lösung:
quelle
In Schienen 5 hat sich die
config.serve_static_files
Option geändert, sodass Sie sie jetzt haben müssenVermögenswerte vor Ort zu bedienen.
quelle
Versuchen Sie den folgenden Code:
config / Umgebungen / Produktion.rb
Führen Sie dann den folgenden Befehl aus:
Schieben Sie dann alle Kompilierungsdateien und Manifestdateien auf den Server.
quelle
Ich verwende mina + puma + nginx , um meine Rails 5-Anwendung bereitzustellen
Überprüfen Sie config / environment / Production.rb
NGINX kümmert sich bereits darum, konfigurieren Sie es entsprechend
Dinge werden gut funktionieren.
quelle
Wenn jemand mit dem gleichen Fehler in der Testumgebung wie ich hierher kommt, hat mir Folgendes geholfen:
dann:
um den
spring server
Prozess und seine PID zu finden , töte ihn dann über:quelle