TZInfo:: Ошибка DataSourceNotFound при запуске сервера Rails v4.1.0 в Windows
Я создал новое приложение с использованием Ruby on Rails v4.1.0. При попытке запустить сервер или консоль в Windows я столкнулся со следующей ошибкой:
$ 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'
Как я могу решить эту ошибку?
Ответы
Ответ 1
Разрешение ошибки
Чтобы устранить эту ошибку, вам нужно убедиться, что в t Gemfile
будет включен gem-tzinfo-data.
Прежде всего, проверьте Gemfile
, чтобы увидеть, существует ли существующая ссылка на tzinfo-data
. Если ссылки уже нет, добавьте следующую строку:
gem 'tzinfo-data'
Вы можете обнаружить, что уже существует строка, подобная следующей:
gem 'tzinfo-data', platforms: [:mingw, :mswin]
Если вы используете 64-разрядную версию Ruby для Windows, добавьте :x64_mingw
в список платформ следующим образом:
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]
В качестве альтернативы вы можете полностью удалить параметр platforms
.
После этого запустите bundle update
в командной строке, чтобы установить драгоценный камень tzinfo-data, после чего вы сможете запустить сервер Rails или консоль.
Фон
Ошибка TZInfo::DataSourceNotFound
поднимается TZInfo, зависимостью компонента Active Support для Rails. TZInfo ищет источник данных о часовых поясах в вашей системе, но не смог найти его.
Во многих системах на базе Unix (например, Linux) TZInfo может использовать каталог zoneinfo в качестве источника данных. Однако Windows не включает такой каталог, поэтому вместо этого нужно установить gem-tzinfo-data. Драгоценный камень tzinfo-data содержит одни и те же данные zoneinfo, упакованные как набор модулей Ruby.
Rails генерирует по умолчанию Gemfile
, когда приложение сначала создается. Если приложение создано в Windows, тогда будет включена зависимость для tzinfo-данных. Однако (начиная с версии Rails версии 4.1.0) это исключает :x64_mingw
из списка платформ, поэтому не работает корректно в 64-битных версиях Windows Ruby. Этот должен быть исправлен в будущих выпусках Rails.
Ответ 2
Мне нужно было добавить два камня, чтобы запустить сервер.
gem 'tzinfo-data'
gem 'tzinfo'
Затем установите пакет.
Ответ 3
Просто поместите это в свой терминал приложения:
gem install tzinfo-data
затем измените строку gemfile на:
gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
затем снова в вашем терминале:
bundle update
Это позволит решить проблему напрямую.
Ответ 4
Добавьте в свой файл Gem следующую строку
gem 'tzinfo-data', платформы: [: x64_mingw,: mingw,: mswin]
Ответ 5
У меня была эта ошибка при попытке установить Redmine в контейнер Docker:
RAILS_ENV=production bundle exec rake db:migrate
дал мне ошибку, потому что пакет tzdata
не был установлен в моем изображении Ubuntu.
apt-get update && apt-get install tzdata -y
сделал трюк.
Ответ 6
Возможно, tzinfo не установлен в вашей системе, попробуйте установить его:
gem install tzinfo
gem install tzinfo-data
Ответ 7
У меня тоже была эта проблема, и я исправил ее, добавив BOTH :x64_mingw
в список платформ для tzinfo-data
, а gem tzinfo - в gemfile. Затем установите пакет.
Ответ 8
Я столкнулся с этой проблемой в macOs Mojave 10.14.5 и обнаружил, что это связано с тем, что моя символическая ссылка в macO не читала правильные предоставленные файлы информации о зоне.
Я смог отследить это с тем, где файлы должны быть с помощью команды TZInfo::ZoneinfoDataSource.search_path
и это обеспечило вывод ["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"]
.
Я начал искать в /usr/share/zoneinfo
и там были файлы для чтения. Однако рельсы все еще не находили их, не читали, не казнили их...? Затем я создал символическую ссылку из другого файла в /usr/share/zoneinfo.default/
на /etc/zoneinfo
(последний путь, который ищет TZInfo)
Итак, наконец, команда, которая работала для меня, чтобы решить эту проблему, была ln -s/usr/share/zoneinfo.default/etc/zoneinfo
Надеюсь, эта информация будет полезна кому-то в будущем.
Ответ 9
Таким образом, драгоценные камни, похоже, не были правильно установлены, я должен был сделать следующее
gem 'tzinfo-data'
gem 'tzinfo'
то
расслоение увидеть все драгоценные камни
расслоение gem tzinfo предоставит вам каталог драгоценных камней
затем перейдите в этот каталог. вам необходимо объединить tzinfo-данные в tzinfo.
в файле tzinfo-data, перейдите к..
local_pathname/tzinfo-данных 1.2014.5/Library/tzinfo
скопируйте все содержимое этого каталога в...
local_pathname/tzinfo-1.2.1/Library/tzinfo
(для меня это означало копирование "данных" файла и "данных" в каталог)
то
идти к
local_pathname/tzinfo-1.2.1/Библиотека
и откройте файл, tzinfo, (а не каталог)
и добавьте эту строку
требуют "tzinfo/data"
Это была такая боль, чтобы понять