драгоценный камень, который не может найти драгоценный камень, несмотря на его установку - PullRequest
6 голосов
/ 14 февраля 2010

Я собрал свой первый драгоценный камень, но, похоже, не смог правильно его установить. Я могу выдать команду

sudo gem install ceilingfish-toto

, который производит вывод

Successfully installed ceilingfish-toto-0.3.6
1 gem installed

Но когда я тогда наберу gem which ceilingfish-toto. Я получаю вывод

Can't find ruby library file or shared library ceilingfish-toto

Что очень странно, потому что, если я пойду и посмотрю в свою папку с драгоценными камнями, я увижу все установленные там файлы

# 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

Кто-нибудь знает, что может вызвать это? Я думаю, что это жалуется, потому что в названии драгоценного камня есть дефис. Вы можете увидеть gemspec здесь http://github.com/ceilingfish/toto

Ответы [ 3 ]

7 голосов
/ 18 июня 2010

Это не дефис.

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

Peachy. Обратите внимание на существование 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

Нет 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

Таким образом, gem which ceilingfish-toto выдает ошибку, даже если ceilingfish-toto установлен, потому что нет файла lib/ceilingfish-toto.rb (там даже нет папки lib).

7 голосов
/ 16 февраля 2010

gem which ceilingfish-toto просматривает драгоценный камень, требующий путь к файлу с именем doorfish-toto.rb. Так как его нет, он ничего не возвращает. Для вас подойдет gem which toto, но, поскольку lib/ не включен в вашу спецификацию gem, файлы lib не установлены, поэтому его не существует.

Повторный запуск rake gemspec может решить проблему.

Кроме того, вы можете проверить, установлен ли гем по его имени, с помощью gem list ceilingfish-toto, который должен показать, что он установлен, независимо от того, какие файлы у него есть (в нем также будет указан список установленных версий).

0 голосов
/ 16 февраля 2010

ОК, поэтому проблема здесь заключается в том, что была проблема с моим файлом gemspec. Из того, что я могу сказать, обязательно должен быть файл с именем lib/gem-name.rb, поэтому в этом случае мне нужно было lib/ceilingfish-toto.rb.

Похоже, что некоторые другие драгоценные камни работают неправильно. Например, mime-types или rest-client, даже если они не отображаются с gem which, они действительно работают.

Я не уверен, что это все еще правильно, я уверен, что должен быть способ заставить драгоценный камень с дефисом в названии вести себя правильно. Если я узнаю, я отправлю вам сообщение и сообщу вам.

...