我正在构建一个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
。同样的错误。
所有irb
、rails
和gem
子命令都在顶部生成堆栈跟踪。我做了什么来打破所有这些命令,我如何扭转它?
你应该手动删除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
, doc
和specifications
目录,每个目录都包含一个含有破碎宝石残留物的文件或子目录。将它们全部删除,问题就解决了。
(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有引用的路径。确保从文档、缓存和规格文件夹中删除所有内容。这终于解决了我的问题。