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'
这是一个很难弄清楚的问题