我已经构建了我的第一个宝石,但我似乎无法正确安装它.我可以发出命令
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
gem which ceilingfish-toto查看名为ceilingfish-toto.rb的文件的gem require路径.由于没有一个,它什么都不返回.对您有用的是gem which toto,但由于lib/未包含在您的gem规范中,因此未安装lib文件,因此它不存在.
重新运行rake gemspec可能会解决问题.
顺便说一下,您可以通过使用gem list ceilingfish-toto哪个安装来检查是否按名称安装了gem ,无论文件是什么(它还会列出已安装的版本).
这不是连字符.
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夹).
| 归档时间: |
|
| 查看次数: |
8579 次 |
| 最近记录: |