我使用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'
如何解决此错误?
答案 0 :(得分:150)
解决错误
要解决此错误,您需要确保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正在引发TZInfo::DataSourceNotFound
错误,这是Rails的Active Support组件的依赖项。 TZInfo正在寻找您系统上的时区数据源,但未能找到它。
在许多基于Unix的系统(例如Linux)上,TZInfo能够使用系统zoneinfo目录作为数据源。但是,Windows不包含此类目录,因此需要安装tzinfo-data gem。 tzinfo-data gem包含相同的zoneinfo数据,打包为一组Ruby模块。
首次创建应用程序时,Rails会生成默认Gemfile
。如果在Windows上创建应用程序,则将包含tzinfo-data的依赖项。但是(从Rails版本4.1.0开始),这会从平台列表中省略:x64_mingw
,因此无法在64位Windows版本的Ruby上正常工作。这个should be fixed将在未来的Rails版本中发布。
答案 1 :(得分:14)
我必须添加两个宝石才能让服务器启动..
gem'tzinfo-data'
宝石'tzinfo'
然后捆绑安装。
答案 2 :(得分:8)
只需将其放入您的应用终端:
gem install tzinfo-data
然后将gemfile行更改为:
gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin]
然后再次在您的终端:
bundle update
这将直接解决问题。
答案 3 :(得分:5)
将以下行添加到您的Gem文件
gem' tzinfo-data',平台:[:x64_mingw,:mingw,:mswin]
答案 4 :(得分:4)
尝试在Docker容器中安装Redmine时遇到了错误:
RAILS_ENV=production bundle exec rake db:migrate
给了我错误,因为我的Ubuntu映像中没有安装包tzdata
。
apt-get update && apt-get install tzdata -y
做了这个伎俩。
答案 5 :(得分:2)
也许您的系统上没有安装tzinfo,请尝试安装它:
gem install tzinfo
gem install tzinfo-data
答案 6 :(得分:1)
我也有这个问题并通过将:x64_mingw
添加到tzinfo-data
的平台列表,并将gem'tzinfo'添加到gemfile来修复它。然后捆绑安装。
答案 7 :(得分:0)
我在macOs Mojave 10.14.5上遇到了这个问题,发现这与我在macOs中的符号链接无法读取正确提供的区域信息文件有关。
我能够使用以下命令来跟踪文件的位置
ArrayA = Array(123, 456, 789)
ArrayB = Array(123, 567, 912)
ArrayC = Array(456, 789, 567)
,它提供了TZInfo::ZoneinfoDataSource.search_path
的输出。
我开始研究["/usr/share/zoneinfo", "/usr/share/lib/zoneinfo", "/etc/zoneinfo"]
,那里有可供读取的文件。但是,rails仍然没有找到它们,没有读取它们,执行它们..?因此,我然后创建了从/usr/share/zoneinfo
中的另一个文件到/usr/share/zoneinfo.default/
的符号链接(查找TZInfo的最后路径)
因此,最终对我有用的命令是/etc/zoneinfo
希望这些信息对将来的人有所帮助。
答案 8 :(得分:-1)
所以,宝石似乎没有正确安装,我必须做以下
gem' tzinfo-data' 宝石' tzinfo'
然后
捆绑秀 看到所有的宝石
捆绑gem tzinfo 将为您提供宝石的目录
然后,转到该目录。你需要将tzinfo-data拼接成tzinfo。 在tzinfo-data文件中,转到.. local_pathname / tzinfo - 数据 - 1.2014.5 / LIB / tzinfo 将此目录的所有内容复制到... local_pathname / tzinfo-1.2.1 / LIB / tzinfo (对我来说,这意味着复制'数据'文件和'数据'目录)
然后 去 local_pathname / tzinfo-1.2.1 / lib中 并打开文件,tzinfo,(不是目录) 并添加此行 要求&#t; tzinfo / data'
这是一个很难找到的痛苦