我正在建造一颗宝石。我刚刚完成了基本的项目结构,并尝试用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
。同样的错误。所有irb
,rails
和gem
子命令都在顶部生成堆栈跟踪。我怎么做才能打破所有这些命令以及如何扭转它?
答案 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
目录下有cache
,doc
和specifications
个目录,所有目录都包含一个文件或子目录,其中包含破碎的宝石。删除它们都解决了这个问题。
答案 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; 如果这不起作用,
尝试在
/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文件夹中删除所有内容。这最终解决了我的问题。