Meine Frage ist ähnlich wie diese Rails 3.2 Asset Pipeline mit Passagier Endless Errors außer, dass ich, wenn ich versuche, tatsächlich zu gehen
<link href="stackoverflow.com/assets/application-eed7996ee9017637f923133371ab3e92.css" media="all" rel="stylesheet" type="text/css" />
Ich erhalte eine 404. Das ist das, was ich nicht verstehe. Es wird in /assets/ gesucht, aber wenn ich mir den Code ansehe, der bereitgestellt wurde, befinden sich die Assets nur in /public/assets, was eigentlich ein Symlink zu /var/www/myapp/shared/assets ist. Was um alles in der Welt ist also dafür verantwortlich, der Anwendung zu sagen, dass die Suche in /assets korrekte Ergebnisse liefern wird?
Ich verwende Rails 3.2.0, ruby-1.9.3-p125, die Bereitstellung auf Ubuntu, Apache und Thin.
Ich sollte das klarstellen: Meine Assets werden tatsächlich auf dem Server bereitgestellt. Alles funktioniert einwandfrei, bis sie serviert werden müssen, in diesem Fall production.log sagt mir, dass es für sie in /assets/application-eed7996ee9017637f923133371ab3e92.css, die 404's sucht.
Für jede Anfrage meiner thin.log sagt
cache: [GET /] miss
y produktion.log sagt
ActionController::RoutingError (No route matches [GET] "/assets/application-abecf2e096af9ee80697fd49e79a55e7.js"):
UPDATE @Brandan danke für die Hilfe. Meine Assets sind in der Tat in RAILS_ROOT/public/assets
. Ich habe dies in meine Apache vhost-Datei eingefügt:
DocumentRoot /var/rails/myappname/current/public
RewriteEngine On
XSendFile On
XSendFilePath /var/rails/myappname #not even sure if this line is needed
<LocationMatch "^/assets/.*$">
Header unset ETag
FileETag None
ExpiresActive On
ExpiresDefault "access plus 1 year"
</LocationMatch>
Meine RAILS_ROOT/config/environments/production.rb Einstellungen:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
0 Stimmen
Wie erstellen Sie Ihre Links?
0 Stimmen
In meinem Layout sage ich
<%= stylesheet_link_tag "application", :media => "all" %>
y<%= javascript_include_tag "application" %>
0 Stimmen
Haben Sie Ihre Assets vorkompiliert?
0 Stimmen
Ja, ich habe das neueste Capistrano und verwende die
load 'deploy/assets'
in meinem Capfile, um das zu tun. Aber auch wenn ich die Assets manuell vorkompiliere, geht es nicht.0 Stimmen
Ich habe auch dieses Problem Bin sehr daran interessiert, herauszufinden, warum.