由于规范中的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和重新运行打包机。
-
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的相同版本来解决它。
正如本·霍尔说的那样,你必须修复系统可能改变的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
,一切都是美好的。