gemspec中的日期格式规范无效

当我尝试在Windows中使用gems时,我收到以下错误,我也提到了这个stackoverflowpost和更新的rubygems和rails。 但没有什么能解决这个问题。

以下是完整的错误,

     D:\> gem env
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /tilt-1.3.3.gemspec]:规范中的日期格式无效:“2011-08-25 00:00:00
 .000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /execjs-1.2.4.gemspec]:规范中的日期格式无效:“2011-08-03 00:00:
 00.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /temple-0.3.3.gemspec]:规范中的日期格式无效:“2011-08-26 00:00:
 00.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /guard-0.6.3.gemspec]:规范中的日期格式无效:“2011-09-01 00:00:0
 0.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /guard-livereload-0.3.1.gemspec]:规范中的日期格式无效:“2011-09
 -01 00:00:00.000000000Z“
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /rack-cache-1.0.3.gemspec]:规范中的日期格式无效:“2011-08-27 00
 :00:00.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /tilt-1.3.3.gemspec]:规范中的日期格式无效:“2011-08-25 00:00:00
 .000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /execjs-1.2.4.gemspec]:规范中的日期格式无效:“2011-08-03 00:00:
 00.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /temple-0.3.3.gemspec]:规范中的日期格式无效:“2011-08-26 00:00:
 00.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /guard-0.6.3.gemspec]:规范中的日期格式无效:“2011-09-01 00:00:0
 0.000000000Z”
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /guard-livereload-0.3.1.gemspec]:规范中的日期格式无效:“2011-09
 -01 00:00:00.000000000Z“
 [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications中的gemspec无效
 /rack-cache-1.0.3.gemspec]:规范中的日期格式无效:“2011-08-27 00
 :00:00.000000000Z”
 RubyGems环境:
   -  RUBYGEMS版本:1.7.2
   -  RUBY VERSION:1.8.7(2011-06-30 patchlevel 352)[i386-mingw32]
   - 安装目录:D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
   -  RUBY EXECUTABLE:D:/RailsInstaller/Ruby1.8.7/bin/ruby.exe
   - 可执行目录:D:/RailsInstaller/Ruby1.8.7/bin
   -  RUBYGEMS PLATFORMS:
     - ruby
     -  x86-mingw32
   - 创业板路径:
      -  D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
      -  C:/ Documents and Settings / jeygokul / .gem / ruby​​ / 1.8
   - 创业板配置:
      - :update_sources => true
      - :verbose => true
      - :benchmark => false
      - :backtrace => false
      - :bulk_threshold => 1000
   - 远程来源:
      -  http://rubygems.org/

我通过将RubyGems升级到1.8.10修复了这个问题

gem update --system 

编辑:您也可以尝试(根据ZeissS的建议)

 gem install rubygems-update update_rubygems 

最终的解决方案是:

在Ruby目录中搜索“spec”文件:* C:\ Ruby187 \ lib \ ruby​​ \ gems \ 1.8 \ specifications *

如果gemspec文件包含如下内容:s.date =%q {2011-10-13 00:00:00.000000000Z }然后删除00:00:00.000000000Z部分:s.date =%q {2011-10- 13}

保存这些gemspec文件后,问题就解决了。

这些解决方案都不适合我。 为了解决这个问题,我删除了所提到的目录的所有内容(some / path / to / specification /)然后我安装了我需要的gems(实际上,Bundler然后捆绑安装)。

除了运行gem update --system我在每个报告为bad的项目gem env上使用了gem install 。 这清理了我的机器上的错误。

正如迈克尔在评论中所说:

 gem pristine --all 

尝试在Ubuntu 11.10上安装GEM时遇到同样的问题。

 Invalid gemspec in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: invalid date format in specification: "2011-12-28 00:00:00.000000000Z" 

以上选项对我不起作用。 gem env报告如下:

 RubyGems Environment: - RUBYGEMS VERSION: 1.7.2 - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux] 

所以我认为这个问题是由于我需要安装更新版本的RubyGems。

发布gem update --system yeilded以下警告:

 ERROR: gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories. If you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian. 

但是我终于能够通过发出以下命令将rubygems更新到1.8.15:

 sudo gem install rubygems-update && update_rubygems 

一切顺利,祝你好运! 🙂

[/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]中的gemspec无效:规范中的日期格式无效:“2011-09-09 00:00:00.000000000Z”

对这类问题的简单解决方法是导航到文件..例如。

步骤1. cd /var/lib/gems/1.8/specifications
第2步。在你选择的编辑器中打开文件(chronic-0.6.4.gemspec)…(gedit chronic-0.6.4.gemspec)
步骤3.将s.date =%q {2011-10-13 00:00:00.000000000Z}更改为s.date =%q {2011-10-13}

干杯:)

升级到10.10后,我在ubuntu上遇到了同样的问题。 以上都不适合我。 我必须从http://rubygems.org/pages/download安装update_rubygems脚本并运行一次。 一切都行之有效。

我修正了这个问题’无效日期格式规范’,改变了D中的相应行:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec把s.date = Time.now而不是s.date =“2011-08-25 00:00:00.000000000Z”同样可以使用其他文件。

我有太多的gem一个接一个地修复,并尝试update_rubygemsgem pristine --all仍然没有运气。

因此,我使用rvm clear gemset删除所有带有错误gemspec的gem。 执行bundle install以重新安装所有gem,以及Viola!

 cd vendor/bundle/ruby/1.9.x/specifications sed -i 's/ 00\:00\:00.000000000Z//g' * 

通过运行gem update --system解决了gem update

这些答案中提到的各种解决方案对我不起作用。 什么工作是重新安装特定版本的违规gem。 在你的情况下,看起来像:

 gem install tilt -v 1.3.3 gem install execjs -v 1.2.4 gem install temple -v 0.3.3 gem install guard -v 0.6.3 gem install guard-livereload -v 0.3.1 gem install rack-cache -v 1.0.3 

我认为gem pristine xxx yyy zzzgem pristine --all可能不会一直(永远?)出现在gem存储库中,而gem install xxx -v vrm可以。

无论如何,重新安装gem的违规版本对我有用,虽然它很乏味……

rvm gemset clear然后bundle install为我工作!

“gem install ruby​​gems-update”,“update_rubygems”,然后“gem pristine –all”是在我之前列出的所有工作都没有解决之后为我解决问题的组合。

就我而言,引用的gem版本甚至没有安装。 我有那些gem,但不是gemspecs导致错误的版本。 所以,我刚刚删除了每个/path/to/specifications/offending-XYZZ.gemspec文件。

这不是一个真正的答案,但如果有人想挖掘更多,我在这里找到了这个gemspec规范: http ://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html(向下滚动到日期=日期()并单击显示来源):

 @date = case date when String then if %r\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then Time.utc($1.to_i, $2.to_i, $3.to_i) else raise(Gem::InvalidSpecificationException, "invalid date format in specification: #{date.inspect}") end when Time, Date then Time.utc(date.year, date.month, date.day) else TODAY end 

所以我想这是解析gemspec的代码,它看起来像显示错误的文件中的日期格式不符合这一点。

我所做的只是手动修复那些违规的gemspecs,如上所述(将日期更改为“yyyy-mm-dd”,它适用于我。

我遇到过这个问题的所有rubygem规格都有一条线

s.rubygems_version =%q {1.3.5}

所以我猜这些只是古老的gem? 那些%q {…}还有什么呢?

如果您在Ubuntu 11.04上遇到此错误,我的解决方案是以下命令行:

 $ sudo apt-get install ruby1.9.1 

执行此操作后,您将无法获得日期错误。