2017-01-09 5 views
2

Ich habe Probleme zu verstehen, was initialize_on_precompile für verwendet wurde. Was genau hat es bedeutet, dass es falsch ist (vor allem, da es sich auf Heroku bezieht)? Was bedeutet es, dass es wahr ist?Wofür wurde initialize_on_precompile verwendet?

Entschuldigung, wenn diese Frage zu weit/vage ist, aber ich kann die Antwort nirgends finden.

+0

Der erste Link bei der Suche „initialize_on_precompile Heroku“ auf Google sagt Ihnen genau, was sie tut, https: // DevCenter .heroku.com/articles/rails-asset-pipeline – infused

+1

Nun, ich wollte nur eine umfassende Antwort für das, was es bedeutet. Woher weiß ich, dass es keine * anderen * Dinge auslöst? Nochmals, Entschuldigung für die neue Frage. – user7392373

+2

@infused Diese Person ist eindeutig ein Newb. Er entschuldigte sich sogar im Originalbeitrag. Meine Güte. Es ist nicht sinnvoll, so hart zu sein. Ich bin mir sicher, dass jemand anders eine bessere Erklärung der Konfiguration über 2 Sätze hinaus gewürdigt hätte. Jeder startet irgendwo. Diese Gemeinschaft war vor 6 Jahren sehr gastfreundlich. – user438293456

Antwort

3

Diese Option war bis Rails 3.x verfügbar, als wenn Sie rake assets:precompile ausführen initialisiert es die Anwendung und versucht, eine Verbindung mit der Datenbank herzustellen. Die Einstellung dieser Option auf false verhindert dies. Also, wenn Sie irgendwelche Probleme in Verbindung mit der Datenbank haben rake assets:precompile wird nicht funktionieren und scheitern diese Option stellt sicher, dass es funktioniert.

Von Rails Git Repo:

Die initialize_on_precompile Änderung erzählt die precompile Aufgabe ohne Berufung auf Rails zu laufen. Dies liegt daran, dass der Vorkompilier-Task standardmäßig im Produktionsmodus ausgeführt wird und versucht, eine Verbindung mit der angegebenen Produktionsdatenbank herzustellen. Bitte beachten Sie, dass Sie keinen Code in Pipeline-Dateien haben können, die auf Rails-Ressourcen (wie der Datenbank) angewiesen sind, wenn Sie mit dieser Option lokal kompilieren.

In Rails 4.x wurde diese Option entfernt und ist nicht mehr erforderlich. Schienen 4 jetzt immer initializers und die Datenbankkonfiguration vor Vorkompilieren Vermögenswerte

Quelle der Commit lädt:https://github.com/rails/rails/commit/2d5a6de

+1

Danke für die schnelle Antwort! Was bedeutet das für Edelsteine, die initialize_on_precompile auf Rails 3 als falsch angeben mussten? Zum Beispiel ist die neueste Version von devise jetzt Rails 5-kompatibel. Bedeutet das, dass es berücksichtigt wurde, dass Initialisierer * immer * laufen werden, bevor sie Assets vorkompilieren? – user7392373

+0

Ja, es stimmt, dass die Edelsteine, die mit Schienen 4 und höher kompatibel sind, dies berücksichtigt haben. – Deep

+0

Vielen Dank für Ihre Geduld. Das hat mir wirklich geholfen zu verstehen, was passieren könnte. – user7392373