Gem "Malformed Version Number String"

Gem "Malformed Version Number String"

我正在构建 gem。我刚刚布置了基本的项目结构,并尝试使用 gem build my_gem.gemspec 构建它,效果很好。然后我用 gem install My\ Gem-0.0.1.gem 安装它,它看起来仍然运行良好。然后我尝试 运行 irb 我得到了这个:

/Users//.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/version.rb:206:in `initialize': Malformed version number string on (ArgumentError)

我尝试进行了一些更改并保存了它们。我运行gem build my_gem.gemspec。同样的错误。

所有 irbrailsgem 子命令都在生成一个堆栈跟踪,其位于顶部。我做了什么来破坏所有这些命令,我​​该如何撤销它?

您应该手动删除您的 gem:

cd $GEM_HOME
find . -path \*my_gem\*

如果一切正常(即没有与您的 gem 无关的文件):

find . -path \*my_gem\* -delete

在再次安装 gem 之前,请确保您在 .gemspec 中指定了 version

UPD.

寻找gem残基的其他位置:

~/.rvm/gems/ruby-<version>@global
~/.rvm/gems/ruby-<version>
/System/Library/Frameworks/Ruby.framework/
# look for "GEM PATHS" section
gem env
# rbenv paths
~/.rbenv/versions
~/.gem/

UPD2

问题解决了!采取的步骤:

这显示了无法加载的特定 Rubygems 可执行文件的确切位置:

rbenv which gem
# => /Users/<username>/.rbenv/versions/2.2.2/bin/gem

然后发现在2.2.2目录下有cachedocspecifications目录,里面都有一个文件或子目录有残差破碎的 gem。全部删除问题解决了。

(2016-5-24)
我今天解决了这个问题。
我正在尝试学习如何编写 gem。然后导致这个问题。
我的猜测是因为我的 gem 的名字包含 whitespace: "hola 1c7"
并且gem不告诉你如何解决这个问题,这很烦人

你应该去: /usr/local/lib/ruby/gems/2.3.0/specifications 删除 xxx.gemspec

就我而言,我的 gem 的名字是 "hola 1c7"
所以我删除了 "hola 1c7-0.1.2.gemspec"
我认为是 space 导致问题。

如果这不起作用,
尝试在 /usr/local/lib/ruby/gems/ 中搜索您 gem 的名字 并删除所有你能找到的文件,
就我而言,首先删除

hola 1c7.1.3.2.gem 来自 /usr/local/lib/ruby/gems/2.3.0/cache
所以命令是:
/usr/local/lib/ruby/gems/2.3.0/cache$ sudo rm -rf hola\ 1c7-1.3.2.gem

然后 /usr/local/lib/ruby/gems/2.3.0/gems$ sudo rm -rf hola\ 1c7-1.3.2/


我的Ruby版本:Ruby2.3.0
我的 Linux 版本:Ubuntu 16.04 LTS

我找不到参考路径中的文件,也找不到此 post 中的一些其他建议路径。对我有帮助的是首先注释掉第 201 行 version.rb 文件中引发的错误。然后使用 GEM PATH 目录使用 $ gem env 查找引用了的路径gem。确保从 doc、cache 和 specifications 文件夹中删除所有内容。这终于解决了我的问题。