如何安全地修复webrobots-0.0.10.gemspec中的“规范中的无效日期格式”

对于每个gem执行,我收到以下错误:

 Invalid gemspec in [...rvm/gems/ruby-1.9.2-p136/specifications/webrobots-0.0.10.gemspec]: invalid date format in specification: "2011-07-01 00:00:00.000000000Z" 

我不是webrobots维护者,我无法卸载该gem。

有什么安全措施可以在生产服务器上解决此问题吗?

这些天与Github和Bundler一起,您不必成为维护者就可以解决您正在使用的gem中的问题。 只需在Github上分配项目 ,修复那里的问题,他们只需将Bundler指向你的分支。 如果它是gem的一个方便的扩展,而不仅仅是你自己的黑客,你也可以考虑向原始维护者提出拉动请求,将你的更改滚动到官方gem。

说完所有这些之后, 可能导致此问题的问题似乎并未出现在0.010版本的webrobots的gemspec中。 当gemspec中的日期采用您在错误中具有的格式时,可能会发生此问题,例如:

 "2011-07-01 00:00:00.000000000Z" 

看一下gemspec的片段虽然我们有:

 s.authors = [%q{Akinori MUSHA}] s.date = %q{2011-07-01} s.description = %q{This library helps write robots.txt compliant web robots in Ruby. 

所以这似乎是正确的。 已知导致此问题的另一个问题是YAML解析器问题,修复您需要强制使用特定YAML解析器(psych)。 您需要在某处定义以下内容:

 require 'yaml' YAML::ENGINE.yamler = 'syck' 

最后,您可能希望清理本地安装,然后进行重新部署,这可能会让您感到厌烦。 再次,如果你使用这样的Bundler:

 gem update --system rvm gemset empty mygemset gem install bundler gem install 

这是我修复“规范中的无效日期格式”错误的方法:

1.)转到位于以下位置的规格文件夹:

/usr/local/lib/ruby/gems/1.8/specifications/

2.)找到导致问题的规范。

3.)将“s.date =%q {2011-05-21 00:00:00.000000000Z}”更改为“s.date =%q {2011-05-21}”

这对我来说是一场胜利! 祝好运

您可能正在使用旧版本的gem。 看你当前的版本gem -v 。 将您的gem升级到最新

 gem update --system 

并使用新的gem再次安装gem文件。 gem install bundle install