如何安全地修复网络机器人的"invalid date format in specification"-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的一个方便的扩展,而不仅仅是你自己的一个hack,你也可以考虑向原始维护者发出pull请求,将你的更改滚动到官方gem中。

说了这么多,可能导致这个问题的问题似乎并没有出现在webbots的0.0.10版本的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解析器(心理)。您需要在某处定义以下内容:

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

最后,您可能想要清理本地安装,然后进行重新部署,这可能会对您进行排序。同样,如果你使用Bundler像这样:

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

下面是我修复"invalid date format in specification"错误的方法:

1)。进入位于:

的规格文件夹

/usr/地方/lib/ruby/珠宝/1.8/规格/

2)。查找导致问题的规格

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

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

您可能使用的是旧版本的gem。参见当前版本gem -v。升级gem到最新版本

gem update --system

用new gem重新安装gem文件。gem install <gem-name>bundle install

最新更新