/ / Warum stürzt die Heroku-App ab und sagt "Keine solche Datei zum Laden - nokogiri (LoadError)"? - Rubin auf Schienen, Heroku, Nokogiri

Warum stürzt die Heroku App ab und sagt "Keine solche Datei zum Laden - nokogiri (LoadError)"? - Rubin auf Schienen, Heroku, Nokogiri

Ich habe gerade versucht, meine App auf Heroku bereitzustellen. Es funktioniert schon eine ganze Weile, ich füge nur einige neue Funktionen hinzu. Sobald ich das Deployment durchgeführt habe, bekam ich die Fehlermeldung "App Crashed". heroku logs gezeigt No such file to load -- nokogiri (LoadError).

Nun auf meinem System, mein Gemfile.lock zeigte 2 verschiedene nokogiri-edelsteine: nokogiri (~> 1.5.0)eine Abhängigkeit von fog (1.4.0) und nokogiri (1.5.5-x86-mingw32) was scheint keine Abhängigkeit von irgendetwas zu sein. Unter Plattformen war nur x86-mingw32. Mein Entwicklungsrechner ist Windows 7 mit ruby 1.9.3p194 und die Ruby-Version, die der Heroku-Toolbalt für sich selbst verwendet heroku-toolbelt/2.30.1 (i386-mingw32) ruby/1.9.2.

Meine Version von Bundler war auf dem neuesten Stand, meine Version des Heroku Toolbelt auf dem neuesten Stand. Ich habe versucht zu löschen Gemfile.lock und nach den Ratschlägen einiger Forenbeiträge erneut bereitgestellt, aber die App war immer noch abgestürzt.

Es scheint, dass Heroku in der richtigen Version von nokogiri einfach nicht gebündelt wurde, sondern es wegen meiner Verwendung von Windows ignorierte. Die Art, wie ich repariert werden musste, wurde hinzugefügt gem "nokogiri", "~> 1.5.5" zu meinem gemfile (obwohl meine app nicht explizit nokogiri benötigt, ist es nur eine abhängigkeit) und dann wieder auf Heroku implementiert, ohne zu laufen bundle install auf meinem eigenen System zuerst. Nun stürzt die App nicht ab.

Ich habe keine Ahnung, warum das funktioniert hat. Ich weiß nicht, wie ich sicherstellen kann, dass das Problem nicht erneut auftritt. Ich habe gerade zufällig mit einem verzweifelten Patch Glück gehabt. Ich kann diese Ausfallzeit in der Zukunft nicht mehr haben oder mir Sorgen machen, dass so etwas bei einem Routineeinsatz erneut auftritt. Kann jemand bitte erklären, was wirklich falsch war und was Recht Weg, um es zu lösen?

Antworten:

0 für die Antwort № 1

Füge das hinzu

 PLATFORMS
x86-mingw32

in dein Gemfile. Heroku ignoriert dann Ihre Gemfile.lock weil Windows verrückte unterschiedliche Abhängigkeiten hat.