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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top