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

时间:2011-04-24 16:31:28

标签: rubygems bundler ruby-1.9 ruby-1.9.2

当我包含一个我创建的gem时,感谢Bundler(版本1.0.12),在Gemfile中然后我尝试捆绑或者rake就像那样:

$ 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

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

15 个答案:

答案 0 :(得分: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}

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

答案 1 :(得分:60)

以下是修复所有宝石的命令:

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}并解决您的问题。

答案 2 :(得分:21)

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

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

sudo gem install rubygems-update
sudo update_rubygems     

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

sudo gem update --system

答案 3 :(得分:14)

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

2011-04-21 00:00:00.000000000Z

YYYY-MM-DD

或者 升级你的轨道

sudo gem update rails

它将解决问题。

答案 4 :(得分:6)

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

答案 5 :(得分:4)

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

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

答案 6 :(得分:3)

这更多是对ben hall的答案的评论,但我似乎还没有那个特权

宝石更新似乎没有用,我认为它甚至无法加载宝石,因为日期格式不好。手动更改日期太令人沮丧,一个接一个,所以一个grep:

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

对于sed:

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

并且风险自负!! 我仍然是一个新手,但它对我有用;)

答案 7 :(得分:2)

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

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

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

答案 8 :(得分:2)

霰弹枪方法:卸载所有宝石并重新运行捆绑包。

  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

答案 9 :(得分:1)

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

答案 10 :(得分:1)

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

  

中的gemspec无效   [/var/lib/gems/1.8/specifications/svn2git-2.1.2.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选项中。

答案 11 :(得分:1)

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

gem update --system

答案 12 :(得分: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/

我终于找到了一个原因/方法来防止我的系统出现这些错误。我只是恢复到黄瓜和黄瓜轨道版本1.0.2。使用最新版本就是这样做......

答案 13 :(得分:0)

即使您安装了具有有效日期格式的宝石的最新版本,请务必事后gem cleanup GEMNAME,因为gem仍会抱怨旧库的规格。

答案 14 :(得分:0)

重新安装宝石可以解决许多这些略有不同的机器状态。

就我而言:

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

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

我的问题是在尝试使用cocoapods时获得Invalid gemspec。我又跑了gem install cocoapods,一切都很美好。