由于规范中的date格式,gemspec无效

当我包括一个gem,我感谢Bundler(版本1.0.12),在一个Gemfile,然后我尝试捆绑或耙子就像这样:

$ 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 

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

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

1.)转到位于以下位置的说明文件夹:

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

2.)find导致问题的规格。

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

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

这是为了解决所有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}并解决您的问题。

请注意Damian Nowak的评论。 这些命令可能会搞乱你的rubygems!

在Ubuntu 11.10下面解决了这个错误:

 sudo gem install rubygems-update sudo update_rubygems 

以下可能在某些系统上工作,但不能在Debian上运行:

 sudo gem update --system 

你可以升级你的gem 。 要解决这个问题,你可以直接编辑gemspec文件

 2011-04-21 00:00:00.000000000Z 

 YYYY-MM-DD 

或者升级你的导轨

 sudo gem update rails 

它将解决这个问题。

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

有同样的问题。 它看起来像一个rubygems的bug。 这是修复它的提交: https : //github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

您需要将rubygems和bundler更新到最新版本。 如果您在此之后仍然有问题,那么您可能需要删除,然后重新安装任何gem,给你的问题。

这是对本大厅答案的更多评论,但我似乎没有这个特权

gem更新似乎没有工作,即时通讯认为它甚至不能加载gem,因为不好的date格式。 手动更改date太令人沮丧,所以一个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新手,但它为我工作;)

在我的slicehost服务器上的说明文件夹位于不同的地方。 这里是path:

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

提供的错误应该提供指定文件夹的path。

霰弹枪的方法:卸载所有的gem和重新运行打包机。

  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

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

正如本·霍尔说的那样,你必须修复系统可能改变的gemspec文件。 要知道哪个文件是在错误报告中看到的文件,例如:

[/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]中的gemspec无效:规范中的date格式无效:“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选项。

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

 gem update --system 

这是我的环境:

 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/ 

我终于设法find一个原因/方法来防止我的系统上的这些错误。 我只是恢复到黄瓜和黄瓜栏版本1.0.2。 使用最新版本是这样做的…

即使你使用有效的date格式安装了最新版本的gem,确保gem仍然会抱怨老版本库的规范,所以一定要gem cleanup GEMNAME

重新安装gem可能是许多这些稍微不同的机器状态的解决scheme。

在我的情况下:

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

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

当我尝试使用cocoapods时,我的问题是Invalid gemspec 。 我再次运行gem install cocoapods ,一切都是美好的。