我使用 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'

我该如何解决这个错误?

有帮助吗?

解决方案

解决错误

要解决此错误,您需要确保 tzinfo-data gem 包含在您的 Gemfile.

首先,检查您的 Gemfile 查看是否存在现有的引用 tzinfo-data. 。如果还没有引用,请添加以下行:

gem 'tzinfo-data'

你可能会发现已经有如下一行:

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

如果您在 Windows 上使用 64 位版本的 Ruby,则添加 :x64_mingw 平台列表如下:

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

或者,您可以删除 platforms 完全选项。

执行此操作后,运行 bundle update 在命令行安装 tzinfo-data gem,然后您就可以启动 Rails 服务器或控制台。


背景

TZInfo::DataSourceNotFound TZInfo 引发错误,TZInfo 是 Rails 的 Active Support 组件的依赖项。TZInfo 正在您的系统上寻找时区数据源,但未能找到。

在许多基于 Unix 的系统上(例如Linux),TZInfo可以使用该系统 区域信息 目录作为数据源。但是,Windows 不包含这样的目录,因此需要安装 tzinfo-data gem。tzinfo-data gem 包含相同的 zoneinfo 数据,打包为一组 Ruby 模块。

Rails 生成默认值 Gemfile 首次创建应用程序时。如果应用程序是在 Windows 上创建的,则将包含 tzinfo-data 的依赖项。然而(从 Rails 版本 4.1.0 开始),这省略了 :x64_mingw 来自平台列表,因此在 64 位 Windows 版本的 Ruby 上无法正常工作。这 应该修复 在未来的 Rails 版本中。

其他提示

我不得不添加两个宝石来开始服务器。

gem'tzinfo-data'
宝石'tzinfo'

然后捆绑安装。

只是把它放在你的应用程序终端:

gem install tzinfo-data
.

然后将Gemfile Line更改为:

gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
. 然后在终端中再次:

bundle update
.

将直接解决问题。

将以下行添加到GEM文件

Gem'Tzinfo-data',平台:[:x64_mingw,:mingw,:mswin]

在尝试在Docker容器中安装Redmine时,我有那个错误:

RAILS_ENV=production bundle exec rake db:migrate
.

给了我这个错误,因为在我的Ubuntu图像中未安装包生成族划线代码。

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

诀窍。

也许Tzinfo未安装在您的系统上,尝试安装它:

 gem install tzinfo
 gem install tzinfo-data
.

我也有这个问题,并通过将:x64_mingw添加到tzinfo-data的平台列表中,将Gem'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' 宝石'tzinfo'

然后

捆绑展示 查看所有宝石

捆绑宝石tzinfo 会给你一个gem的目录

然后,转到该目录。您需要将Tzinfo-Data拼接到Tzinfo中。 在Tzinfo数据文件中,转到.. 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