Вопрос по ruby, rubygems – Рубиновый драгоценный камень указан, но не загружается (драгоценный камень в пользовательском каталоге, а не в рубиновом каталоге)

14

Я пытаюсь заставить некоторые гемы работать на веб-хосте, который поддерживает 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, все системные гемы работают нормально. Тем не менее, я могуt мой загруженный каталог пользователя установил драгоценные камни:

$ 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

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

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

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

Ааа, интересно ... см. Выше Matt
Что отображается, когда вы просто набираете выражениеGem.path» в ирб? Rafe

Ваш Ответ

5   ответов
0

Я боролся с этим и решил, что .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
38

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

require 'rubygems'

надеюсь, это поможет

Потратил час, выясняя, что являетсярубиновый файл ' чтобы добавить это, так как у меня был драгоценный камень с-rails', Наконец добавили его в файл rails / rails.rb и волшебным образом это сработало Cosmin Atanasiu
0

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

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

Мне было интересно, было ли это приложение Rails. Rafe
на самом деле это вообще не веб-приложение - никаких рельсов и т. д. Мне нужны библиотеки гемов для приложения командной строки. Matt
Командное приложение, которое будет выполняться в обычной среде моих пользователей, - поэтому приведенные выше примеры, показывающие ошибку при выполнении из командной строки, являются именно этой проблемой. Matt
5

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

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

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

0

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

require 'rubygems'

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

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

> irb -r 'rubygems'

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

Похожие вопросы