TZInfo :: DataSourceNotFound错误在Windows上启动Rails v4.1.0服务器
我已经使用Ruby on Rails v4.1.0创build了一个新的应用程序。 当试图在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 (eg 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'
我怎样才能解决这个错误?
解决错误
要解决这个错误,你需要确保你的Gemfile
中包含了tzinfo-data gem。
首先,检查你的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引发,它是Rails的Active Support组件的一个依赖项。 TZInfo正在寻找系统中的时区数据来源,但找不到一个。
在许多基于Unix的系统(例如Linux)上,TZInfo能够使用系统zoneinfo目录作为数据源。 但是,Windows不包含这样的目录,所以需要安装tzinfo-data gem。 tzinfo-data gem包含相同的zoneinfo数据,打包成一组Ruby模块。
当应用程序第一次创build时,Rails会生成一个默认的Gemfile
。 如果应用程序是在Windows上创build的,则会包含对tzinfo-data的依赖关系。 但是(从Rails版本4.1.0开始),这个从平台列表中省略了:x64_mingw
,所以在64位Windows版本的Ruby上无法正常工作。 这应该在未来的Rails版本中得到解决 。
我不得不添加两个gem让服务器启动..
gem'tzinfo-data'
gem'tzinfo'
然后捆绑安装。
只要把它放在你的应用terminal里:
gem install tzinfo-data
然后将gemfile行更改为:
gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
然后再次在你的terminal:
bundle update
这将直接解决问题。
将以下行添加到您的Gem文件
gem'tzinfo-data',平台:[:x64_mingw,:mingw,:mswin]
也许tzinfo没有安装在你的系统上,试着安装它:
gem install tzinfo gem install tzinfo-data
尝试在Docker容器中安装Redmine时出现此错误:
RAILS_ENV=production bundle exec rake db:migrate
给我的错误,因为包tzdata
没有安装在我的Ubuntu镜像。
apt-get update && apt-get install tzdata -y
做的伎俩。
我也有这个问题,并通过添加:x64_mingw
到tzinfo-data
的平台列表中,并将gem'tzinfo'添加到gemfile中来解决这个问题。 然后捆绑安装。
所以,gem似乎不是很好安装,我不得不做下面的事情
gem'tzinfo-data'gem'tzinfo'
然后
捆绑显示看所有gem
捆绑gemtzinfo将得到你的gem的目录
然后,转到该目录。 您需要将tzinfo-data拼接到tzinfo。 在tzinfo-data文件中,去.. local_pathname / tzinfo-data-1.2014.5 / lib / tzinfo将这个目录的所有内容复制到… local_pathname / tzinfo-1.2.1 / lib / tzinfo(对于我来说意味着复制“data”文件和“data”目录)
然后进入local_pathname / tzinfo-1.2.1 / lib并打开文件tzinfo(不是目录)并添加这一行require'tzinfo / data'
这是一个很难弄清楚的问题