TZINFO :: Errore DataSourCenotFound Errore di avvio Rails V4.1.0 Server su Windows
-
21-12-2019 - |
Domanda
Ho creato una nuova applicazione utilizzando Ruby su Rails V4.1.0.Quando si tenta di avviare un server o console su Windows, sto incontrando il seguente errore:
$ 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'
.
Come posso risolvere questo errore?
Soluzione
Risoluzione dell'errore
Per risolvere questo errore, è necessario assicurarsi che la gemma del Tzinfo-Data sia inclusa nel Gemfile
.
Prima di tutto, controlla il Gemfile
per vedere se c'è un riferimento esistente a tzinfo-data
. Se non c'è già un riferimento, aggiungi la seguente riga:
gem 'tzinfo-data'
.
Potresti scoprire che c'è già una linea come quanto segue:
gem 'tzinfo-data', platforms: [:mingw, :mswin]
.
Se si utilizza una versione a 64 bit di Ruby su Windows, quindi aggiungi :x64_mingw
all'elenco delle piattaforme come segue:
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]
.
In alternativa, è possibile rimuovere del tutto l'opzione platforms
.
Dopo aver fatto questo, eseguire bundle update
alla riga di comando per installare il gemma di Tzinfo-Data e sarai in grado di avviare il server o la console dei binari.
Sfondo
L'errore TZInfo::DataSourceNotFound
viene sollevato da Tzinfo, una dipendenza del componente di supporto attivo delle rotaie. Tzinfo sta cercando una fonte di dati del fuso orario sul tuo sistema, ma non riescono a trovarne uno.
su molti sistemi basati su Unix (ad es. Linux), Tzinfo è in grado di utilizzare il sistema zoneinfo Elenco come fonte di dati. Tuttavia, Windows non include tale directory, quindi è necessario installare il gem Gem TzinFo-Data. La gemma Tzinfo-Data contiene gli stessi dati ZoneInfo, confezionati come un set di moduli Ruby.
Le rotaie generano un generatore di predefinito predefinito quando viene creata l'applicazione. Se l'applicazione viene creata su Windows, sarà inclusa una dipendenza per i dati Tzinfo. Tuttavia (As of Rails versione 4.1.0), questo omette Gemfile
dall'elenco delle piattaforme, quindi non funziona correttamente su versioni di Windows a 64 bit di Ruby. Questo dovrebbe essere risolto in future rails rilasci.
Altri suggerimenti
Ho dovuto aggiungere due gemme per iniziare il server ..
Gem 'Tzinfo-Data'
GEM 'TZINFO'
Allora installazione del bundle.
Basta inserire questo nel terminale di app:
gem install tzinfo-data
.
Quindi modificare la linea Gemfile su:
gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
.
Poi di nuovo nel tuo terminale:
bundle update
.
che risolverà direttamente il problema.
Aggiungi la seguente riga al tuo file Gem
.Gem 'Tzinfo-Data', piattaforme: [: x64_mingw ,: mingw ,: msmin]
Ho avuto quell'errore durante il tentativo di installare Redmine in un contenitore Docker:
RAILS_ENV=production bundle exec rake db:migrate
.
mi ha dato l'errore perché il pacchetto tzdata
non è stato installato nell'immagine Ubuntu.
apt-get update && apt-get install tzdata -y
.
ha fatto il trucco.
Forse Tzinfo non è installato sul tuo sistema, prova a installarlo:
gem install tzinfo
gem install tzinfo-data
. Anche io avevo questo problema e lo fissò aggiungendo sia il :x64_mingw
all'elenco delle piattaforme per tzinfo-data
e il gemma 'tzinfo' al gemfile.Quindi installazione del bundle.
Mi sono imbattuto in questo problema su Macos Mojave 10.14.5 e ho scoperto che era qualcosa con il modo in cui il mio simbolo di MacOS non stava leggendo i corretti file di informazioni sulla zona.
Sono stato in grado di rintracciarlo con il punto in cui i file dovrebbero usare il comando
TZInfo::ZoneinfoDataSource.search_path
e che ha fornito l'output di ["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"]
.
Ho iniziato a guardare in /usr/share/zoneinfo
e c'erano file disponibili per leggere.Tuttavia i binari non li stavano ancora trovando, leggendoli, eseguindoli ..Quindi ho quindi creato un riquadro simbolico dall'altro file in /usr/share/zoneinfo.default/
a /etc/zoneinfo
(l'ultimo percorso Tzinfo guarda in alto)
Quindi finalmente il comando che ha funzionato per risolvere questo problema è stato ln -s /usr/share/zoneinfo.default /etc/zoneinfo
Speriamo che questa informazione sia utile per qualcuno in futuro.
Allora, le gemme non sembravano installare correttamente, ho dovuto fare il seguente
Gem 'Tzinfo-Data' GEM 'TZINFO'
quindi
.Bundle Show Per vedere tutte le gemme
Bundle Gem Tzinfo ti porterà la directory della gemma
Quindi, vai a quella directory.Avrai bisogno di girare i dati di Tzinfo in Tzinfo. Nel file Tzinfo-Data, vai a .. local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo Copia tutti i contenuti di questa directory in ... local_pathname / Tzinfo-1.2.1 / lib / tzinfo (Per me questo significava copiare 'dati' il file e 'dati' la directory)
Allora vai a local_pathname / Tzinfo-1.2.1 / lib e apri il file, tzinfo, (non la directory) e aggiungi questa linea Richiedere 'Tzinfo / Data'
Questo era un tale dolore da capire