89

当我在 Gemfile 中包含我制作的 gem 时,感谢 Bundler(版本 1.0.12),然后我尝试像这样捆绑或耙:

$ rake

我收到此错误消息:

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

我在最后一个 Mac OS X (10.6.4) 上,有:

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

和:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

我真的不知道如何解决这个问题。感谢您的任何想法。

4

15 回答 15

143

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

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}

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

于 2011-08-19T17:09:14.707 回答
60

以下是为所有 gem 修复此问题的命令:

perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec

它转换s.date = %q{2011-05-21 00:00:00.000000000Z}s.date = %q{2011-05-21}并应该解决您的问题。

于 2011-11-18T10:50:06.570 回答
21

请注意 Damian Nowak 的评论。这些命令可能会弄乱您的 ruby​​gems!

在 Ubuntu 11.10 上,以下解决了此错误:

sudo gem install rubygems-update
sudo update_rubygems     

以下可能适用于某些系统,但不适用于基于 Debian:

sudo gem update --system
于 2011-10-03T20:19:29.763 回答
14

您可以升级您的gem. 要解决此问题,您可以gemspec直接编辑文件 - 从

2011-04-21 00:00:00.000000000Z

YYYY-MM-DD

或者也升级您的导轨

sudo gem update rails

它将解决问题。

于 2011-07-19T06:30:52.587 回答
6

不要指定时间......只是日期。2011-04-21应该可以正常工作。

于 2011-04-26T00:43:23.517 回答
4

有同样的问题。它看起来像 ruby​​gems 中的错误。这是修复它的提交:https ://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

您需要将 ruby​​gems 和 bundler 更新到最新版本。如果在那之后您仍然遇到问题,那么您可能需要删除然后重新安装任何给您带来问题的 gem。

于 2011-08-12T14:52:39.447 回答
3

这更像是对本霍尔答案的评论,但我似乎没有这种特权

gem 更新似乎不起作用,我认为由于日期格式错误,它甚至无法加载 gem。手动更改日期太令人沮丧,无法一一进行,因此使用 grep:

grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}

对于 sed:

sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec

风险自负!!我仍然是 sed 新手,但它对我有用;)

于 2011-09-22T19:32:19.003 回答
2

在我的 slicehost 服务器上,规范文件夹位于不同的位置。这是路径:

/usr/lib/ruby/gems/1.8/规范

提供的错误应该给出规范文件夹的路径。

于 2011-09-06T17:49:03.220 回答
2

霰弹枪方法:卸载所有 gem 并重新运行 bundler。

  1. gem list --no-version | xargs gem uninstall -aIx
  2. rm -i `rvm gemdir`/specifications/*.gemspec
  3. gem update --system
  4. gem install bundler
  5. bundle install
于 2011-10-26T15:58:19.110 回答
1

(直到错误修复进入 Rubygems 的稳定版本)我通过使用 gem 命令的 --version 开关重新安装任何生成警告的 g​​em 的相同版本来解决它。

于 2011-09-29T19:04:28.703 回答
1

正如 Ben Hall 所说,您必须修复可能因系统而异的 gemspec 文件。要知道是什么文件,请查看错误报告中说明的文件,例如:

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

在此示例中,您必须编辑“/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec”文件并将“2011-12-28 00:00:00.000000000Z”更改为“2011-12-28”在 s.date 选项中。

于 2012-01-25T12:34:40.373 回答
1

现在还有这个问题。更新 Rubygems 解决了这个问题:

gem update --system
于 2013-01-24T08:46:45.827 回答
0

这是我的环境:

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
- INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

我终于设法找到了一个原因/一种方法来防止我的系统出现这些错误。我只是恢复到 Cucumber 和 Cucumber-rails 版本 1.0.2。使用最新版本正在这样做......

于 2011-09-13T12:36:56.783 回答
0

即使您安装了具有有效日期格式的最新版本的 gem,请确保gem cleanup GEMNAME之后再安装,因为gem仍然会抱怨旧库的规范。

于 2011-11-28T22:13:57.120 回答
0

在许多这些略有不同的机器状态下,重新安装 gem 可能是解决方案。

就我而言:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

就我而言,其他更有创意的解决方案失败了。

我的问题是Invalid gemspec在尝试使用 cocoapods 时遇到的。我又跑gem install cocoapods了,一切都很顺利。

于 2013-02-13T22:00:35.617 回答