2013-09-04 14 views
11

Ich verwende Ruby 2.0.0-p247 und Rails 4.0.0Dateien von Asset hergestellt: precompile nicht urls von stylesheet_link_tag (fehlende Digest) in minimal Schienen 4 Website

erzeugt passen, wenn ich eine minimale Rails 4 Seite wie diese machen:

rails new minimal 
cd minimal 
rails generate controller home index 
tee config/routes.rb <<EOF 
Minimal::Application.routes.draw do 
    root 'home#index' 
end 
EOF 

vorkompilieren dann die Vermögenswerte mit

rake assets:precompile 

Es erzeugt Vermögenswerte wie:

I, [2013-09-04T17:05:36.992951 #3549] INFO -- : Writing /WORKINGDIR/minimal/public/assets/application-723d1be6cc741a3aabb1cec24276d681.js 
I, [2013-09-04T17:05:37.052303 #3549] INFO -- : Writing /WORKINGDIR/minimal/public/assets/application-f1a14051f17824976271b9c0460232f0.css 

Aber wenn ich den Server im Produktionsmodus zu starten, mit

RAILS_ENV=production rails s 

Die generierten URLs im HTML-Punkt nicht an den vorkompilierte Dateien:

<link data-turbolinks-track="true" href="/stylesheets/application.css" media="all" rel="stylesheet" /> 
<script data-turbolinks-track="true" src="/javascripts/application.js"></script> 

Ich würde erwarten, eher :

<link data-turbolinks-track="true" href="assets/application-f1a14051f17824976271b9c0460232f0.css" media="all" rel="stylesheet" /> 
<script data-turbolinks-track="true" src="/assets/application-723d1be6cc741a3aabb1cec24276d681.js"></script> 

Der Standard config/environments/production.rb Einstellungen sagen Verdauansätzen zu verwenden:

config.assets.digest = true 

Aber es scheint selektiv ignoriert zu werden?

Fehle ich etwas?

UPDATE:

Getestet habe ich diese nur in Rails 4.2.3 und dies scheint festgelegt werden, jedoch müssen wir noch ein paar Umgebungsvariablen in den rails s Befehl zur Hand im Produktionsmodus starten:

SECRET_KEY_BASE=$(rake secret) RAILS_SERVE_STATIC_FILES=true RAILS_ENV=production rails s 

Antwort

12

Während ich diese Frage aufschrieb, stieß ich auf diesen Blogpost, der vorschlägt, dass es ein Programmfehler ist.

http://railsblog.kieser.net/2013/08/rails4-phusion-passenger-asset-pipeline.html

Von den verschiedenen Vorschlägen, nur um die Zusammenstellung Rückfall wahr ...

config.assets.compile = true 

scheint ausreichend zu sein Einstellung Rails Erzeugung geeigneter Weise verdaut URLs in zu treten:

<link data-turbolinks-track="true" href="/assets/application-f1a14051f17824976271b9c0460232f0.css" media="all" rel="stylesheet" /> 
<script data-turbolinks-track="true" src="/assets/application-723d1be6cc741a3aabb1cec24276d681.js"></script> 

Der andere Vorschlag, RAILS_ENV und RAILS_GROUPS explizit zu setzen, schien verschiedene Digest-Strings auf den vorkompilierten Dateien zu erzeugen, aber Sie scheinen immer mit dem generierten HTML übereinzustimmen.

+0

ich in der Regel RAILS_ENV = Produktion eingestellt. Dies scheint eine Regression von 3.2.x zu sein :( –

+3

'config.assets.compile = true 'wird Performance-Probleme in der Produktion haben, denke ich – Johann

+0

@Johann, wenn du noch" Rake-Assets: precompile "tust, wenn du die Live-Neukompilierung einsetzt (wie wenn' config.assets.compile' '' false' wäre) Code sollte nie wirklich getroffen werden (da er immer die vorkompilierten Versionen sehen und sie bedienen wird). – pix

0

Ich konnte Asset-Links auflösen, die Digest nicht einschließen, indem Sie die Asset-Versionsnummer stoßen.

 # Version of your assets, change this if you want to expire all your assets 
- config.assets.version = '1.0' 
+ config.assets.version = '2.0' 

Sie finden diese finden entweder in config/application.rb wenn Sie aktualisieren oder im neueren Standort config/initializers/asset.rb

Verwandte Themen