宝石“格式错误的版本号字符串”

时间:2015-08-04 05:17:30

标签: ruby gem

我正在建造一颗宝石。我刚刚完成了基本的项目结构,并尝试用gem build my_gem.gemspec构建它,这很好。然后我用gem install My\ Gem-0.0.1.gem安装它,它看起来仍然很好。然后我尝试运行irb并得到了这个:

/Users/<username>/.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子命令都在顶部生成堆栈跟踪。我怎么做才能打破所有这些命令以及如何扭转它?

3 个答案:

答案 0 :(得分:1)

你应该手动删除你的宝石:

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

如果一切看起来都不错(即没有与宝石无关的文件):

find . -path \*my_gem\* -delete

再次安装宝石之前,请务必在version中指定.gemspec

<强> UPD

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

~/.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个目录,所有目录都包含一个文件或子目录,其中包含破碎的宝石。删除它们都解决了这个问题。

答案 1 :(得分:0)

(2016-五月-24)
我今天解决了这个问题 我试着学习如何写一个宝石。然后引起这个问题。
我的猜测是因为我宝石的名字包含空格:&#34; hola 1c7&#34;
和宝石不告诉你如何解决这个问题,这很烦人

你应该去: <?php session_start(); ?> <!DOCTYPE html> <html> <body> <?php // Echo session variables that were set on previous page //echo "Favorite color is ".$_SESSION["favcolor"].".<br>"; //echo "Favorite animal is ".$_SESSION["favanimal"]."."; ?> <?php mysql_connect("localhost","***********","**************"); mysql_select_db("******"); $sql1=mysql_query("select * from login_details where customer_id='$_POST[userid]'"); $row=mysql_fetch_assoc($sql1); if (!$sql1) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); //exit; } else { echo " inside last else"; $sql2=mysql_query("INSERT INTO login_details VALUES ('$_POST[userid]','$_POST[password]')"); echo "Account successfully Created..."; } mysql_close(); ?> </body> </HTML> 删除那个xxx.gemspec

在我的情况下,我宝石的名字是&#34; hola 1c7&#34;
所以我删除&#34; hola 1c7-0.1.2.gemspec&#34;
我认为是太空问题。

如果这不起作用,
尝试在 /usr/local/lib/ruby/gems/2.3.0/specifications 中搜索您的宝石名称 并删除您可以找到的所有文件,
在我的情况下,首先我删除

来自/usr/local/lib/ruby/gems/

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

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

答案 2 :(得分:0)

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