Я создал свой первый драгоценный камень, но я, кажется, не могу заставить его устанавливать правильно. Я могу дать команду
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
Который является очень странным, потому что, если я иду и смотрю в своей папке драгоценных камней I, видят все файлы, установленные там
# 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
драгоценный камень, который потолочная рыба-toto
просматривает драгоценный камень, требует путь к файлу с именем потолочная рыба-toto.rb. Поскольку его нет, он ничего не возвращает. Для вас подойдет gem which toto
, но поскольку lib /
не включен в вашу спецификацию gem, файлы lib не установлены, поэтому он не существует.
Повторный запуск rake gemspec
может решить проблему.
Кроме того, вы можете проверить, установлен ли гем, по его имени, используя gem list Celebratefish-toto
, который должен показать вам, что он установлен, независимо от имеющихся у него файлов (он также будет отображать установленные версии).
Итак, проблема здесь, похоже, в том, что возникла проблема с моим файлом gemspec. Из того, что я могу сказать, обязательно должен быть файл с именем lib / gem-name.rb
, поэтому в данном случае мне потребовался lib / потолокfish-toto.rb
.
Это не похоже на правильную работу некоторых других драгоценных камней. Например, mime-types
или rest-client
, даже если они не отображаются с гемом , который
, они действительно работают.
Я еще не уверен, что это совсем правильно, я уверен, что должен быть способ получить драгоценный камень с дефисом в названии, чтобы вести себя правильно. Если я узнаю, я отправлю ответ и дам вам знать.
Это не дефис.
гем, который
ищет файлы библиотеки в гемах, а не в гемах . Сравните:
$ 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
Персиковый. Обратите внимание на существование 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, который потолочный фиш-toto
выдает ошибку, даже если установлен потолочный фиш-тото
, потому что нет библиотеки / потолочного фиш-toto.rb
(нет даже папки lib
).