Heroku Assets Vorzukompilieren
Heute war ich mit einer Anwendung arbeiten, die ich hatte, läuft auf Heroku für ein paar Monate jetzt, und in einem Versuch zu bekommen, etwas zu arbeiten, lief ich in meine Entwicklungsumgebung:
rake assets:precompile
Wenn ich verpflichtet, meine änderungen und schob Heroku, bekomme ich 500 Fehler auf meine Anfrage:
ActionView::Template::Error (jquery.flexslider-min.js isn't precompiled):
Ich bin ein bisschen ein Verlust, was zu tun ist, habe ich versucht, ein paar Dinge:
Träge kompilieren in der Produktion (die ich wirklich nicht wollen, zu tun):
Bundler.require(:default, :assets, Rails.env)
Genau auflisten, alle Dateien werden müssen "vorkompiliert" (auch nicht wirklich wollen, dies zu tun, scheint nicht sehr effiziente):
config.assets.precompile += ...
Bisher habe ich einfach ein rollback auf meine Letzte funktionierende version. Ich bin derzeit stecken nicht drücken neuen code. Einrichten einer staging-Umgebung (wie sollte ich das getan haben vor langer Zeit), aber nicht sicher, was als Nächstes zu tun oder was könnte dieses Problem lösen? Warum nicht throw ein Fehler vor?
UPDATE
rake assets:clean
Scheint das problem gelöst haben, obwohl ich nicht verstehe, warum. Kann jemand teilen einige Einblicke in diese?
- Sind deine Skripte sitzen unter
app/assets/javascripts
? Alles in diesem Pfad wird automatisch vorkompiliert werden. - Ja, die Skripts befinden sich im Ordner
- Ich habe das gleiche Problem. Skript
mixpanel.js
ist inapp/assets/javascripts
und es ist nicht vorkompiliert in Bereitstellung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin bereit zu Wetten, eine kompilierte version/Dateiname im inneren des manifestieren.yml in der öffentlichkeit/assets-Ordner war nicht mehr aktuell/falsch.
Wenn Sie änderungen vorgenommen haben, um die flexslider.js Datei, müssen Sie Sie neu kompilieren mit
rake assets:precompile
und drücken Sie die aktualisierte version auf github. Ich glaube, Sie können die version der Ressourcen innerhalb des manifests.yml-Datei.Auch, ich glaube, Sie können ausführen
heroku run rake assets:clean
oderheroku run rake assets:precompile
.Ich glaube nicht, es wäre eine gute Idee sein, precompile-Ressourcen innerhalb von heroku, weil die Versionierung und Namenskonflikte/nicht gespeichert im github.
Können Sie reinigen die Anlagen in heroku und drücken Sie die repo wieder, so dass Sie nicht brauchen, um precompile-lokal und push zu github, es sei denn, es war in der Tat ein Problem in der lokalen Zusammenstellung.
Ich würde auch ein paar Minuten dauern, zu Lesen http://guides.rubyonrails.org/asset_pipeline.html
Andere Möglichkeit ist, Ihr name ist Probleme mit den Ritzeln. Warum nicht verwenden die Entwicklungs-version des flexslider.js benennen Sie es etwas bequemer, und ermöglichen Ritzel zu tun, die minifizierung.
Wenn Sie Rails 4.0 oder höher, ist
rake assets:clean
wurde ersetzt mitrake assets:clobber
.Allerdings gibt es einige aktuelle Probleme mit clean und clobber im Hinblick auf dauerhaft zu löschen Vermögen. Können Sie die Ausgabe hier. https://github.com/heroku/heroku-buildpack-ruby/issues/123
Fand die Lösung in die GitHub-thread:
Vermögenswerte wurden aktualisiert, nachdem ich config Hinzugefügt.Vermögenswerte.version = '1.1' am Ende meiner config-Datei.