Вопрос

Хорошо, я только что потратил 4 часа, пытаясь разобраться в этом, но безуспешно.Я перепробовал все обычные подозреваемые и погуглил все комбинации ruby 1.9.1, load path, gems, mac os x, freebsd, prawn и прочего.Суть заключается в следующем:

Когда я компилирую ruby1.9.1-p129 из исходных текстов в mac os x 10.5, путь загрузки по умолчанию ($:), который я получаю, равен:

ruby -e "puts $:"
/usr/local/lib/ruby/gems
/usr/local/lib/ruby/site_ruby/1.9.1
/usr/local/lib/ruby/site_ruby/1.9.1/i386-darwin9.7.0
/usr/local/lib/ruby/site_ruby
/usr/local/lib/ruby/vendor_ruby/1.9.1
/usr/local/lib/ruby/vendor_ruby/1.9.1/i386-darwin9.7.0
/usr/local/lib/ruby/vendor_ruby
/usr/local/lib/ruby/1.9.1
/usr/local/lib/ruby/1.9.1/i386-darwin9.7.0
.

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

gem which prawn
(checking gem prawn-0.5.0.1 for prawn)
/prawn.rb

и когда я пытаюсь потребовать этого, я получаю:

ruby -e "require 'prawn'"
-e:1:in `require': no such file to load -- prawn (LoadError)
    from -e:1:in `'

Единственный способ, которым я смог решить эту проблему, - это сделать что-то глупое вроде этого:

$: << "/usr/local/lib/ruby/gems/1.9.1/gems/prawn-0.5.0.1/lib"

что, конечно, совершенно нелепо.Итак, вопрос в том, как мне заставить ruby 1.9.1 распознавать и следовать правильному пути к gems?У меня никогда не было этой проблемы с 1.8.7, поэтому я предполагаю, что она специфична для 1.9.1.Я чувствую, что мне здесь не хватает чего-то совершенно очевидного, и я был бы очень признателен за любую помощь!

Это было полезно?

Решение

настройка GEM_PATH=/usr/local/lib/ruby/gems/1.9.1

решил проблему.Я знал, что это было что-то простое.Меня просто бесит, что на выяснение этого ушел ВЕСЬ ДЕНЬ!!Это связано с тем, что никогда не возникало этой проблемы с 1.8.7 и, конечно же, НЕ с RTFM!!

Другие советы

та же проблема на kubuntu karmic.

установка:

$ sudo apt-get install build-essential ruby1.9.1-full libsqlite3 libsqlite3-dev rubygems1.9
$ sudo gem install sqlite3-ruby rails thin --no-rdoc --no-ri

Результат:

$ ruby -e "require 'rubygems'; require 'sqlite3'" 
-e:1:in `require': no such file to load -- sqlite3 (LoadError)
        from -e:1:in `<main>'   

решение:

$ export GEM_PATH=/usr/lib/ruby1.9.1/gems/1.9.1/
require 'rubygems'
require 'prawn'

Если только в версии 1.9 что-то не изменилось и вам больше не нужно сначала запрашивать rubygems.

В следующий раз, когда у вас возникнет такая проблема, не забудьте запустить gem env из командной строки.Это то, что происходит в Windows, но принцип во многом тот же:

C:\Documents and Settings\a.grimm>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.9.1 (2010-01-10 patchlevel 378) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby19/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby19/lib/ruby/gems/1.9.1
     - C:/Documents and Settings/a.grimm/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

Я ищу другой ответ на ту же проблему.В некоторых ситуациях (например.задачи запуска системы) установка переменных окружения перед запуском ruby невозможна.

Есть ли какой-то способ при запуске кода ruby (v >= 1.9.1) требовать gems?Без установки GEM_PATH?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top