Frage

Ich habe eine neue Anwendung mit Ruby on Rails v4.1.0 erstellt.Beim Versuch, einen Server oder eine Konsole unter Windows zu starten, tritt die folgende Fehlermeldung auf:

$ rails server
Booting WEBrick
Rails 4.1.0 application starting in development on ....

Exiting
c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:199:
in `rescue in create_default_data_source': 
No timezone data source could be found. To resolve this, either install 
TZInfo::Data (e.g. by running `gem install tzinfo-data`) or specify a zoneinfo 
directory using `TZInfo::DataSource.set(:zoneinfo, zoneinfo_path)`.
(TZInfo::DataSourceNotFound) 
from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:196:
in `create_default_data_source'

Wie kann ich diesen Fehler beheben?

War es hilfreich?

Lösung

Beheben des Fehlers

Um diesen Fehler zu beheben, müssen Sie sicherstellen, dass das tzinfo-data-Gem in Ihrem enthalten ist Gemfile.

Überprüfen Sie zunächst Ihre Gemfile um zu sehen, ob ein Verweis auf vorhanden ist tzinfo-data.Wenn noch kein Verweis vorhanden ist, fügen Sie die folgende Zeile hinzu:

gem 'tzinfo-data'

Möglicherweise stellen Sie fest, dass bereits eine Zeile wie die folgende vorhanden ist:

gem 'tzinfo-data', platforms: [:mingw, :mswin]

Wenn Sie eine 64-Bit-Version von Ruby unter Windows verwenden, fügen Sie hinzu :x64_mingw zur Liste der Plattformen wie folgt:

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]

Alternativ können Sie die entfernen platforms Option insgesamt.

Führen Sie anschließend aus bundle update in der Befehlszeile, um das tzinfo-data-Gem zu installieren, und Sie können dann Ihren Rails-Server oder Ihre Rails-Konsole starten.


Hintergrund

Der TZInfo::DataSourceNotFound Fehler wird von TZInfo ausgelöst, einer Abhängigkeit der Active Support-Komponente von Rails.TZInfo sucht auf Ihrem System nach einer Quelle für Zeitzonendaten, kann jedoch keine finden.

Auf vielen Unix-basierten Systemen (z.B.Linux) kann TZInfo das System nutzen Zoneninfo Verzeichnis als Datenquelle.Da Windows jedoch kein solches Verzeichnis enthält, muss stattdessen das Gem „tzinfo-data“ installiert werden.Das tzinfo-data-Gem enthält die gleichen Zoneinfo-Daten, verpackt als eine Reihe von Ruby-Modulen.

Rails generiert einen Standardwert Gemfile wenn die Anwendung zum ersten Mal erstellt wird.Wenn die Anwendung unter Windows erstellt wird, ist eine Abhängigkeit für tzinfo-data enthalten.Dies entfällt jedoch (ab Rails-Version 4.1.0). :x64_mingw aus der Liste der Plattformen entfernt und funktioniert daher auf 64-Bit-Windows-Versionen von Ruby nicht ordnungsgemäß.Das sollte behoben werden in zukünftigen Rails-Versionen.

Andere Tipps

Ich musste zwei Edelsteine hinzufügen, um den Server zu starten ..

edel 'tzinfo-daten'
Edelstein 'tzinfo'

Bündel installieren.

Legen Sie dies einfach in Ihr App-Terminal:

generasacodicetagpre.

Ändern Sie dann die Edelsteinleitung an:

generasacodicetagpre.

dann wieder in Ihrem Terminal:

generasacodicetagpre.

das wird das Problem direkt lösen.

Fügen Sie Ihrer GEM-Datei die folgende Zeile hinzu

edel 'tzinfo-data', Plattformen: [: x64_mingw ,: MINGW ,: MSWIN]

Ich hatte diesen Fehler bei der Installation von Redmine in einem Docker-Container:

generasacodicetagpre.

Ich habe mir den Fehler gegeben, weil PaketgeneraDicetagcode in meinem Ubuntu-Bild nicht installiert wurde.

generasacodicetagpre.

tat der Trick.

Vielleicht ist Tzinfo möglicherweise nicht auf Ihrem System installiert, versuchen Sie es zu installieren:

generasacodicetagpre.

Ich hatte dieses Problem auch und habe es behoben, indem ich BEIDE hinzugefügt habe :x64_mingw zur Liste der Plattformen für tzinfo-data, UND das Gem „tzinfo“ zur Gemfile.Dann Bundle-Installation.

Ich bin auf dieses Problem unter macOS Mojave 10.14.5 gestoßen und habe herausgefunden, dass es daran liegt, dass mein Symlink in macOS nicht die korrekten bereitgestellten Zoneninformationsdateien gelesen hat.

Mithilfe des Befehls konnte ich herausfinden, wo sich die Dateien befinden solltenTZInfo::ZoneinfoDataSource.search_path und das lieferte die Ausgabe von ["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"].

Ich begann nachzuforschen /usr/share/zoneinfo und es waren Dateien zum Lesen verfügbar.Rails hat sie jedoch immer noch nicht gefunden, gelesen oder ausgeführt.Also habe ich dann einen Symlink aus der anderen Datei erstellt /usr/share/zoneinfo.default/ Zu /etc/zoneinfo (der letzte Pfad, den TZInfo nachschlägt)

Letztendlich war der Befehl, mit dem ich dieses Problem beheben konnte ln -s /usr/share/zoneinfo.default /etc/zoneinfo

Hoffentlich sind diese Informationen für jemanden in der Zukunft hilfreich.

Also scheint die Edelsteine nicht ganz richtig zu installieren, ich musste folgende tun

edel 'tzinfo-daten' Edelstein 'tzinfo'

dann

Bundle-Show um alle Edelsteine zu sehen

Bündel Edelstein Tzinfo Wird Ihnen das Verzeichnis des Edelsteins erhalten

Gehen Sie dann in das Verzeichnis.Sie müssen Tzinfo-Daten in Tzinfo spleißen. Gehen Sie in der Tzinfo-Datendatei auf. local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo Kopieren Sie alle Inhalte dieses Verzeichnisses in ... local_pathname / tzinfo-1.2.1 / lib / tzinfo (Für mich meinte dies das Kopieren von 'Daten' die Datei und 'Daten' das Verzeichnis)

dann gehe zu local_pathname / tzinfo-1.2.1 / lib und öffnen Sie die Datei, Tzinfo, (nicht das Verzeichnis) und fügen Sie diese Zeile hinzu erfordern 'tzinfo / data'

Dies war so ein Schmerz, um herauszufinden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top