Frage

Rails kann CSS & JS -Dateien (404 Fehler) nicht laden, hat jedoch kein Problem damit, sie in der Entwicklung zu laden.

Ich benutze Capistrano für den Einsatz und die Ausführung von Schienen 3. Mein Weg zur Entwicklung ist /www/myapp Aber mein Weg zur Produktion ist /www/myapp/aktuell.

Die Anwendung selbst scheint einwandfrei zu funktionieren, daher scheint das Problem für CSS/JS -Dateien isoliert zu sein.

Ich habe versucht, die festzulegen Rails_root variabel zu /www/myapp/aktuell in Umgebungen/Produktion.RB Aber es machte keinen Unterschied, die Dateien laden immer noch nicht.

Hier ist der volle Stapel aus dem Produktionsprotokoll:

Started GET "/stylesheets/scaffold.css?1280867531" for 98.173.61.21 at 2010-08-04 17:04:05 -0700

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css"):
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/show_exceptions.rb:55:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/rack/logger.rb:14:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/runtime.rb:17:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `block in call'
  <internal:prelude>:10:in `synchronize'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:145:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in `method_missing'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:642:in `process_client'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:715:in `block in worker_loop'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `each'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `worker_loop'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:604:in `block (2 levels) in spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `fork'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `block in spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `each'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:611:in `maintain_worker_count'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:270:in `start'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:29:in `run'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/bin/unicorn:123:in `<top (required)>'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `load'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `<main>'
War es hilfreich?

Lösung

Die Fehlermeldung sieht so aus, als würde Ihre Rails -App die Anforderung für eine statische Datei abrufen. Rails 3 serviert statische Dateien standardmäßig nicht, da der Webserver viel besser abschneiden kann. Sie sollten die Konfiguration Ihres Webservers überprüfen. Es sollte so konfiguriert werden, dass es zuerst schaut, wenn eine statische Datei im öffentlichen Verzeichnis für eine Anfrage vorhanden ist, und die Anfrage nur an die Rails -App weiterleiten, wenn keine statische Datei vorhanden ist.

Alternativ können Sie es Rails ermöglichen, auch statische Dateien mit config.serve_static_assets = true in config/Umgebungen/Produktion.RB. Dies wird jedoch in der Produktion nicht empfohlen, da Sie wirklich keine Ressourcen einer Rails -App nur für das Servieren statischer Dateien verschwenden sollten. Sagen Sie dem Webserver besser, dies zu tun.

Andere Tipps

Ich habe dieses Problem behoben, indem ich diesen Befehl ausführte:

RAILS_ENV=production rake assets:precompile

Bezug: http://guides.rubyonrails.org/asset_pipeline.html

Meine Umgebung ist Nginx + Unicorn + Rails4

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top