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

时间:2011-08-08 23:14:14

标签: ruby gem

对于每次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"

我不是网络编辑维护者,我无法卸载那个宝石。

在生产服务器上有解决此问题的安全操作吗?

3 个答案:

答案 0 :(得分:4)

现在有了Github和Bundler,你不必成为维护者就可以解决你正在使用的宝石中的问题。只需在Github上分叉the project,修复那里的问题,他们只需将Bundler指向你的分叉。如果它是宝石的一个方便的扩展,而不仅仅是你自己的黑客,你也可以考虑向原始维护者提出拉动请求,将你的更改滚动到官方宝石。

说完所有这些,the issue that might cause this problem似乎没有出现在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 :(得分:2)

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

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}”

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

答案 2 :(得分:0)

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

gem update --system

使用新的gem再次安装宝石文件。 gem install <gem-name>bundle install