当我在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
我真的不知道该怎么解决这个问题。谢谢你的任何想法。
以下是我修复"规范中的无效日期格式"错误的方法:
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}
这是我的胜利!好运
以下是为所有宝石修复此问题的命令:
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
它将解决这个问题。
不要指定时间。。。只是日期。2011-04-21
应该可以正常工作。
也有同样的问题。它看起来像是rubygems中的一个bug。以下是修复它的提交:https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7
您需要将rubygems和bundler更新到最新版本。如果在那之后你仍然有问题,那么你可能需要删除然后重新安装任何给你带来问题的宝石。
这更多的是对ben hall答案的评论,但我还没有这个特权,看起来是
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新手,但它对我有用;(
在我的切片主机服务器上,规范文件夹位于另一个位置。路径如下:
/usr/lib/ruby/gems/1.8/specifications
提供的错误应提供规范文件夹的路径。
霰弹枪方法:卸载所有gem并重新运行bundler。
gem list --no-version | xargs gem uninstall -aIx
rm -i `rvm gemdir`/specifications/*.gemspec
gem update --system
gem install bundler
bundle install
(直到bug修复进入Rubygems的稳定版本(我通过使用gem命令的--version开关重新安装任何生成警告的gem的相同版本来解决它。
正如Ben Hall所说,您必须修复可能因系统而异的gemspec文件。要知道是什么文件,请查看错误报告中显示的文件,例如:
中的gemspec无效[/var/lib/gems/1.8/sven2git-2.1.2.gemspec]:无效日期规范中的格式:"2011-12-28 00:00:00.000000000000Z">
在本例中,您必须编辑"/var/lib/gems/1.8/sven2git-2.1.2.gemspec"文件,并在s.date选项中将"2011-12-28 00:00:00.000000000000Z"更改为"2011-1228"。
现在仍然有这个问题。更新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/
我终于找到了防止系统出现这些错误的原因/方法。我只是恢复到黄瓜和黄瓜轨道1.0.2版本。使用最新版本就是为了做到这一点。。。
即使您安装了具有有效日期格式的gem的最新版本,也要确保之后使用gem cleanup GEMNAME
,因为gem
仍然会抱怨旧库的规范。
在许多稍微不同的机器状态下,重新安装您的gem可能是解决方案。
就我而言:
cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *
就我而言,其他更具创造性的解决方案都失败了。
我的问题是在尝试使用椰子时获得Invalid gemspec
。我再次运行gem install cocoapods
,一切都很好。