Рубиновый драгоценный камень указан, но не загружается (драгоценный камень в пользовательском каталоге, а не в рубиновом каталоге) - PullRequest
14 голосов
/ 11 августа 2009

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

Следуя инструкциям, которые я нашел здесь , я сохранил исходное местоположение драгоценного камня в своем пути к драгоценным камням и добавил свое собственное в / path / to / my / home / gems в ~ / .gemrc

gemhome: /users/home/myuser/gems
gempath:
- /usr/local/lib/ruby/gems/1.8
- /users/home/mysuser/gems

Я загрузил некоторые гемы вручную и выполнил установку с использованием параметров --local и --install-dir команды gem. Затем я составил «список драгоценных камней» и фактически могу увидеть драгоценные камни, которые я установил в своем каталоге пользователя, а также оригинальные драгоценные камни по обычному системному пути.

Если я нажму на IRB или сделаю ruby ​​-e, все системные гемы будут работать нормально. Тем не менее, я не могу загрузить свои установленные пользователем директории gems:

$ ruby -r rubygems -e "require 'nokogiri'"
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require__': no such file to load -- nokogiri (LoadError)
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require'
    from -e:1

Я даже попробовал старую школу require_gem:

$ irb -r rubygems
irb(main):001:0> require_gem 'nokogiri'
Gem::LoadError: Could not find RubyGem nokogiri (> 0.0.0)

    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:204:in `report_activate_error'
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:141:in `activate'
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:37:in `require_gem_with_options'
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:31:in `require_gem'
    from (irb):1

Из моего «списка драгоценных камней» я вижу:

nokogiri (1.3.3)
Nokogiri is an HTML, XML, SAX, and Reader parser

У меня такая же проблема со всеми гемами установки пользовательского каталога. Что мне здесь не хватает?

РЕДАКТИРОВАТЬ: Это не приложение рельсы. Это для командной строки-приложения. Программа будет выполняться моей учетной записью, как и тесты, показанные выше в.

РЕДАКТИРОВАТЬ: По предложению Рэйфа, я посмотрел Gem.path из IRB. В только указан системный путь к самоцвету, /usr/local/lib/ruby/gems/1.8, а не мой путь к каталогу пользователя.

Ответы [ 5 ]

38 голосов
/ 07 июня 2010

У меня была такая же проблема, я исправил ее, добавив следующее в начало файла ruby ​​

require 'rubygems'

Надеюсь, что поможет

5 голосов
/ 13 августа 2009

Мое текущее рабочее (но не идеальное) решение - сделать

Gem.path.push "/path/to/my/gems"

Я говорю не идеально, потому что я ожидал, что содержимое .gemrc сделает для меня автоматически, для всех операций ruby ​​в среде моих пользователей. Не уверен, почему это не так - но вышеупомянутое, по крайней мере, работает.

0 голосов
/ 03 июля 2013

У меня была похожая проблема, но принятый ответ здесь явно не тот путь (по крайней мере, не для меня). Если возможно, вам не следует делать это в файлах gem:

require 'rubygems'

Почему бы тебе не спросить? Посмотрите на эту статью: http://tomayko.com/writings/require-rubygems-antipattern

В любом случае, все будет в порядке, просто требуя 'rubygems' при вызове irb:

> irb -r 'rubygems'

и вы должны иметь тот же результат. Не уверен, почему для этого вопроса этот метод не работает.

0 голосов
/ 24 июня 2010

Я боролся с этим и решил, что .gemrc не загружается во всех случаях. Например, это учитывается при установке гемов, но не обязательно при запуске irb или скрипта / консоли.

Я также обнаружил, что этот путь к локальному каталогу должен отличаться от того, что я видел на многих сайтах. У меня работает следующее:

---
gem: --no-ri --no-rdoc
gemhome: /home/.gem/ruby/1.8
gempath: 
- /home/.gem/ruby/1.8
- /usr/lib/ruby/gems/1.8
0 голосов
/ 11 августа 2009

Я полагаю, что проблема в том, что веб-приложение не использует ту же конфигурацию, что и ваша учетная запись пользователя, возможно потому, что оно работает как другой пользователь. Одним из вариантов является загрузка драгоценных камней в vendor/gems в вашем приложении.

Вы можете сделать это на своем локальном компьютере, используя rake gems:unpack, проверить эти драгоценные камни в системе управления версиями и затем развернуть их на сервере. Это для меня самый надежный подход. Кроме того, вы можете изменить конфигурацию вашего приложения, чтобы искать драгоценные камни в вашем домашнем каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...