TZInfo::DataSourceNotFound ошибка при запуске сервера Rails v4.1.0 в Windows

StackOverflow https://stackoverflow.com//questions/23022258

Вопрос

Я создал новое приложение, используя Ruby on Rails версии 4.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'

Как я могу устранить эту ошибку?

Это было полезно?

Решение

Устранение ошибки

Чтобы устранить эту ошибку, вам нужно убедиться, что драгоценный камень tzinfo-data включен в ваш Gemfile.

Прежде всего, проверьте свой 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, зависимости активного компонента поддержки Rails.TZInfo ищет источник данных о часовых поясах в вашей системе, но не может его найти.

Во многих системах на базе Unix (например,Linux), TZInfo может использовать систему zoneinfo каталог как источник данных.Однако Windows не включает такой каталог, поэтому вместо него необходимо установить драгоценный камень tzinfo-data.Драгоценный камень tzinfo-data содержит те же данные zoneinfo, упакованные в виде набора модулей Ruby.

Rails генерирует значение по умолчанию Gemfile при первом создании приложения.Если приложение создано в Windows, то будет включена зависимость для tzinfo-data.Однако (начиная с версии Rails 4.1.0), это опускает :x64_mingw из списка платформ, so некорректно работает в 64-разрядных версиях Ruby для Windows.Это должно быть исправлено в будущих выпусках Rails.

Другие советы

Мне пришлось добавить два драгоценных камня, чтобы начать сервер ..

Gem 'Tzinfo-data'




GEM 'TZINFO'

Тогда установка пучка.

Просто поставьте это в свой приложение:

gem install tzinfo-data
.

Затем измените линию GemFile на:

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

Тогда снова в вашем терминале:

bundle update
.

, который решит проблему напрямую.

Добавьте следующую строку в файл GEM

Gem 'Tzinfo-data', платформы: [: x64_mingw,: mingw,: mswin]

У меня возникла эта ошибка при попытке установить Redmine в контейнер Docker:

RAILS_ENV=production bundle exec rake db:migrate

выдал мне ошибку, потому что пакет tzdata не был установлен в моем образе Ubuntu.

apt-get update && apt-get install tzdata -y

сделал свое дело.

Может быть, TZINFO не установлен в вашей системе, попробуйте установить его:

 gem install tzinfo
 gem install tzinfo-data
.

У меня тоже была эта проблема, и я исправил ее, добавив оба :x64_mingw к списку платформ для tzinfo-data, И драгоценный камень 'tzinfo' в gemfile.Затем установите пакет.

Я столкнулся с этой проблемой в macOS Mojave 10.14.5 и обнаружил, что это было связано с тем, что моя символическая ссылка в macOS не считывала правильные предоставленные файлы информации о зоне.

Я смог отследить это с помощью того, где должны находиться файлы, используя команду TZInfo::ZoneinfoDataSource.search_path и это обеспечило результат ["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"].

Я начал изучать /usr/share/zoneinfo и там были файлы, доступные для чтения.Однако rails по-прежнему не находил их, не читал их, не выполнял их ..?Итак, затем я создал символическую ссылку из другого файла в /usr/share/zoneinfo.default/ к /etc/zoneinfo (последний путь, который просматривает TZInfo)

Итак, наконец, команда, которая помогла мне устранить эту проблему, была ln -s /usr/share/zoneinfo.default /etc/zoneinfo

Надеюсь, эта информация окажется полезной кому-нибудь в будущем.

Итак, драгоценные камни не совсем не устанавливали правильно, я должен был сделать следующие

Gem 'Tzinfo-data' GEM 'TZINFO'

Тогда

Show Show Чтобы увидеть все драгоценные камни

Bundle Gem Tzinfo Получу вам каталог GEM

Затем перейдите в этот каталог.Вам нужно будет спланировать Tzinfo-данные в Tzinfo. В файле TZINFO-Data перейдите в .. local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo Скопируйте все содержимое этого каталога в ... local_pathname / tzinfo-1.2.1 / lib / tzinfo (Для меня это означало копирование «данных» файла и «данные» каталог)

тогда перейти к local_pathname / tzinfo-1.2.1 / lib и откройте файл, TZINFO, (не каталог) и добавьте эту строку требуют 'tzinfo / data'

Это была такая боль, чтобы выяснить

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top