2013-02-04 13 views
11

ich eine Rails-Anwendung zu Heroku geschoben haben und weiterlaufen in das folgende Problem:Rails Assets Precompile einfach nicht funktioniert

ich Änderungen an meinem Haupt css.scss Datei speichern werden (in assets/Stylesheets) oder zu Bildern in Assets/Bildern, drücken Sie zu Git, drücken Sie das zu Heroku, und laden Sie die Seite neu, nur um herauszufinden, dass diese Assets überhaupt nicht geladen wurden.

Dies war auch ein kleines Problem auf dem lokalen Server, aber eingeben:

rake assets:precompile 

und die lokalen Server Neuladen in der Regel arbeitet, während

tun
heroku run rake assets:precompile 

und dann wieder drücken tut nichts. Ich habe nach Informationen gesucht und nichts besonders hilfreich gefunden.

Bemerkenswert ist, in meinem config/application.rb (einige davon dem Ergebnis des Fischens in):

# Enable the asset pipeline 
config.assets.enabled = true 

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 

in config/Umgebungen/production.rb:

# Disable Rails's static asset server (Apache or nginx will already do this) 
config.serve_static_assets = false 

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

# Generate digests for assets URLs 
config.assets.digest = true 

Von zusätzlichem Interesse, wenn ich nach Heroku schiebe, heißt es unter anderem:

Preparing app for Rails asset pipeline 
     Detected manifest.yml, assuming assets were compiled locally 
-----> Rails plugin injection 
     Injecting rails_log_stdout 
     Injecting rails3_serve_static_assets 

und

Installing dependencies using Bundler version 1.3.0.pre.5 
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment 

ich mit Rails gelernt 3 und nicht wirklich wissen, wie das Vermögen Pipeline unterscheidet sich von dem, was in früheren Version verfügbar war, so traurig, wenn ich ein Idiot bin und mehr setzen sich überlappenden und/oder widersprüchliche Einstellungen in meinen Konfigurationsdateien.

Würde mich über jede Hilfe freuen. Das hat Kopfschmerzen verursacht.

Antwort

13

Es sieht so aus, als könnte es sein, dass Sie Ihre lokal kompilierten Assets zu git hinzufügen und sie drängen und als Ergebnis erstellt Heroku Ihre Assets nicht auf Push. Stellen Sie sicher, dass Sie das Verzeichnis public/assets nicht zu git hinzufügen.

+1

Also meinst du add/public/assets zu der .gitigore Datei? Tun Sie das und "git rm" das Verzeichnis? Oder bestimmte Dateien darin löschen? Es tut uns leid. Ich weiß nicht, welche Beziehung dieses Verzeichnis zur Asset-Pipeline hat, daher bin ich mir nicht sicher, wie ich die fehlerhaften Komponenten rückwirkend entfernen kann. – Sasha

+3

Entfernen Sie dieses Verzeichnis von git und fügen Sie es dann auch zur Git-Ignorierung hinzu. In diesem Verzeichnis werden alle Ressourcen kompiliert, die Rake-Assets ausführen sollen: precompile. –

+0

Stellen Sie sicher, dass die gelöschten Dateien in public/assets/master übergeben werden! also schiebst du ein leeres public/assets/-verzeichnis nach heroku. Sie sollten sehen, dass heroku automatisch Rake-Assets aufruft: precompile – Bruno

Verwandte Themen