TZInfo::DataSourceNotFound error al iniciar Rieles v4.1.0 server en Windows
-
21-12-2019 - |
Pregunta
He creado una nueva aplicación en Ruby on Rails v4.1.0.Al intentar iniciar un servidor o consola en Windows, yo soy de su encuentro con el siguiente error:
$ 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'
¿Cómo puedo solucionar este error?
Solución
Para resolver el Error
Para resolver este error, usted necesita para asegurarse de que el tzinfo-datos de la gema está siendo incluido en su Gemfile
.
Primero de todo, revise su Gemfile
a ver si hay una referencia existente a tzinfo-data
.Si no existe ya una referencia, a continuación, agregue la siguiente línea:
gem 'tzinfo-data'
Usted puede encontrar que ya hay una línea como la siguiente:
gem 'tzinfo-data', platforms: [:mingw, :mswin]
Si usted está utilizando una versión de 64 bits de Ruby on de Windows, a continuación, añadir :x64_mingw
a la lista de plataformas de la siguiente manera:
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]
Alternativamente, usted puede quitar el platforms
la opción por completo.
Después de hacer esto, ejecute bundle update
en la línea de comandos para instalar el tzinfo-datos de la gema y entonces usted será capaz de iniciar su servidor Rails o de la consola.
De fondo
El TZInfo::DataSourceNotFound
el error está siendo criado por TZInfo, una dependencia del Apoyo Activo de los componentes de los Rieles.TZInfo está buscando una fuente de datos de zona horaria en el sistema, pero no para encontrar uno.
En muchos sistemas basados en Unix (por ejemplo,Linux), TZInfo es capaz de utilizar el sistema de zoneinfo directorio como una fuente de datos.Sin embargo, Windows no incluye un directorio, por lo que el tzinfo-datos de la gema necesita ser instalado en su lugar.El tzinfo-datos gem contiene el mismo zoneinfo de datos, se empaqueta como un conjunto de Ruby módulos.
Rails genera un defecto Gemfile
cuando la aplicación se crea por primera vez.Si la aplicación se creó en Windows, a continuación, una dependencia para tzinfo-datos serán incluidos.Sin embargo (como el de los Carriles de la versión 4.1.0), esto omite :x64_mingw
de la lista de plataformas, así que no funciona correctamente en Windows 64-bit versiones de Ruby.Este debe ser fijo en el futuro Rieles de prensa.
Otros consejos
Tuve que agregar dos gemas para que el servidor se inicie.
gema 'tzinfo-data'
gema 'tzinfo'
luego instala el paquete.
Simplemente ponlo en su terminal de la aplicación:
gem install tzinfo-data
Luego cambia la línea GEMFILE a:
gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
luego de nuevo en su terminal:
bundle update
que resolverá el problema directamente.
Agregue la siguiente línea a su archivo de gema
GEM 'Tzinfo-Data', Plataformas: [: x64_mingw,: MINGW,: MSWIN]
Tuve ese error al intentar instalar RedMine en un contenedor de Docker:
RAILS_ENV=production bundle exec rake db:migrate
me dio el error porque el paquete tzdata
no se instaló en mi imagen de Ubuntu.
apt-get update && apt-get install tzdata -y
hice el truco.
Tal vez Tzinfo no está instalado en su sistema, intente instalarlo:
gem install tzinfo
gem install tzinfo-data
He tenido este problema y lo solucionó mediante la adición TANTO de la :x64_mingw
a la lista de plataformas para tzinfo-data
, Y la joya 'tzinfo' al gemfile.Luego bundle install.
Me encontré con este problema en macOs Mojave 10.14.5 y me enteré de que se trataba de algo con la forma de mi enlace simbólico en macOs no leer el correcto siempre de la zona de información de archivos.
Yo era capaz de seguir la pista de este con el lugar donde los archivos deben ser usando el comando
TZInfo::ZoneinfoDataSource.search_path
y que siempre que la salida de ["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"]
.
Comencé a buscar en /usr/share/zoneinfo
y allí estaban los archivos disponibles para leer.Sin embargo rieles todavía no era la búsqueda de ellos, la lectura de los mismos, la ejecución de ellos..?Así que, a continuación, crea un enlace simbólico desde el otro archivo en /usr/share/zoneinfo.default/
a /etc/zoneinfo
(la última ruta de acceso TZInfo mira hacia arriba)
Así que, finalmente, el comando que trabajó para mí para solucionar este problema se ln -s /usr/share/zoneinfo.default /etc/zoneinfo
Espero que esta información es útil para alguien en el futuro.
Entonces, las gemas parecían estar bien instaladas correctamente, tuve que hacer lo siguiente
gema 'tzinfo-data' gema 'tzinfo'
luego
bundle show Para ver todas las gemas
paquete gema tzinfo lo recibirá el directorio de la gema
Entonces, vaya a ese directorio.Tendrá que separar los datos de Tzinfo en Tzinfo. En el archivo de datos de Tzinfo, vaya a .. local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo Copia todos los contenidos de este directorio en ... local_pathname / tzinfo-1.2.1 / lib / tzinfo (Para mí, esto significó copiar "Datos" del archivo y 'DATA'SE el directorio)
entonces ir local_pathname / tzinfo-1.2.1 / lib y abre el archivo, Tzinfo, (no el directorio) y agregue esta linea Requerir 'Tzinfo / DATOS'
Este fue un dolor para descubrir