宝石"Malformed Version Number String"



我正在构建一个gem。我刚刚得到了基本的项目结构,我试着用gem build my_gem.gemspec来构建它,它工作得很好。然后我用gem install My Gem-0.0.1.gem安装它,它看起来仍然很好。然后我试着运行irb,我得到了这个:

/用户//2.2.2 .rbenv/版本//lib/ruby/2.2.0/rubygems/版本。rb:206:在' initialize':错误的版本号字符串在(ArgumentError)

我试着做一些改变并保存它们。我运行gem build my_gem.gemspec。同样的错误。

所有irbrailsgem子命令都在顶部生成堆栈跟踪。我做了什么来打破所有这些命令,我如何扭转它?

你应该手动删除gem:

cd $GEM_HOME
find . -path *my_gem*

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

find . -path *my_gem* -delete

在重新安装gem之前,请确保在.gemspec中指定了version

乌利希期刊指南

寻找宝石残留物的其他位置:

~/.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目录下有cache, docspecifications目录,每个目录都包含一个含有破碎宝石残留物的文件或子目录。将它们全部删除,问题就解决了。

(2016-May-24)
我今天解决了这个问题。我试着学习如何写宝石。然后造成这个问题。
我猜是因为我的gem的名称包含空格:"hola 1c7"
而且gem没有告诉你如何解决这个问题,这很烦人

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

在我的例子中,我的gem的名字是"hola 1c7"
所以我删除了hola 1c7-0.1.2.gemspec
我认为是空间造成的问题。

如果不工作,
试着在/usr/local/lib/ruby/gems/中搜索你的宝石名称然后删除所有你能找到的文件,
在本例中,首先删除

hola 1c7.1.3.2.gem from /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/


My Ruby Version: Ruby 2.3.0
我的Linux版本:Ubuntu 16.04 LTS

我找不到参考路径中的文件,或者这篇文章中其他一些建议的路径。对我有帮助的一件事是首先注释掉版本中出现的错误。第201行的Rb文件。然后使用$ gem env使用GEM PATH目录来查找对GEM有引用的路径。确保从文档、缓存和规格文件夹中删除所有内容。这终于解决了我的问题。

相关内容

最新更新