宝石虽然安装了但却找不到宝石

Cei*_*ish 7 ruby gem

我已经构建了我的第一个宝石,但我似乎无法正确安装它.我可以发出命令

sudo gem install ceilingfish-toto
Run Code Online (Sandbox Code Playgroud)

哪个产生输出

Successfully installed ceilingfish-toto-0.3.6
1 gem installed
Run Code Online (Sandbox Code Playgroud)

但是当我输入时gem which ceilingfish-toto.我得到了输出

Can't find ruby library file or shared library ceilingfish-toto
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为如果我去查看我的gems文件夹,我可以看到安装在那里的所有文件

# ls -l /opt/local/lib/ruby/gems/1.8/gems/ceilingfish-toto-0.3.6/
total 48
-rw-r--r--  1 root  admin  1053 14 Feb 17:16 LICENSE
-rw-r--r--  1 root  admin  6166 14 Feb 17:16 README.md
-rw-r--r--  1 root  admin   879 14 Feb 17:16 Rakefile
-rw-r--r--  1 root  admin     6 14 Feb 17:16 VERSION
-rw-r--r--  1 root  admin  2477 14 Feb 17:16 ceilingfish-toto.gemspec
drwxr-xr-x  7 root  admin   238 14 Feb 17:16 test
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么原因引起的?我认为这是抱怨,因为宝石名称中有一个连字符.你可以在http://github.com/ceilingfish/toto看到gemspec

Bar*_*cat 7

gem which ceilingfish-toto查看名为ceilingfish-toto.rb的文件的gem require路径.由于没有一个,它什么都不返回.对您有用的是gem which toto,但由于lib/未包含在您的gem规范中,因此未安装lib文件,因此它不存在.

重新运行rake gemspec可能会解决问题.

顺便说一下,您可以通过使用gem list ceilingfish-toto哪个安装来检查是否按名称安装了gem ,无论文件是什么(它还会列出已安装的版本).


Dav*_*lan 7

这不是连字符.

gem which在宝石中搜索库文件,而不是宝石.相比:

$ gem which haml
/home/dave/.gem/ruby/1.8/gems/haml-3.0.12/lib/haml.rb
$ ls haml-3.0.12/lib/h*
haml  haml.rb  haml.rbc
Run Code Online (Sandbox Code Playgroud)

桃色的.注意存在的lib/haml.rb.

$ gem which rails
ERROR:  Can't find ruby library file or shared library rails
$ ls rails-2.3.8/lib/r*
rails_generator.rb  railties_path.rb  rubyprof_ext.rb  ruby_version_check.rb
Run Code Online (Sandbox Code Playgroud)

没有lib/rails.rb.但试试:

$ gem which railties_path # not a gem
/home/dave/.gem/ruby/1.8/gems/rails-2.3.8/lib/railties_path.rb
Run Code Online (Sandbox Code Playgroud)

因此gem which ceilingfish-toto,即使ceilingfish-toto安装时也会抛出错误,因为没有lib/ceilingfish-toto.rb文件(甚至没有文件lib夹).