Проблема ruby ​​требует (что-то делать с $ LOAD_PATH) - PullRequest
2 голосов
/ 14 июня 2011

Я пытаюсь использовать драгоценный камень, который я только что установил (через sudo gem install excelsior), вот так

требуется 'rubygems'

требуется 'Excelsior'

...

Это нормально работает в irb, но когда я вставляю точно такой же код в файл .rb и пытаюсь запустить его с ruby, я получаю <internal:lib/rubygems/custom_require>:29:in require': no such file to load -- excelsior (LoadError)

Полагаю, это как-то связано с тем, что пути загрузки, по-видимому, полностью отличаются в irb от ruby ​​(я работаю на Mac и точно не помню, как я установил используемую версию ruby). *

Так как мне настроить ruby, чтобы он имел тот же путь загрузки, что и irb?

Одна дополнительная информация: некоторые драгоценные камни работают, но не все: S

Ответы [ 4 ]

2 голосов
/ 14 июня 2011

Вы можете легко проверить, что находится в вашем пути загрузки IRB:

irb(main):001:0> $LOAD_PATH

Затем вы можете определить отсутствующие каталоги и включить их в ruby, вызвав его с параметром -I (который может использоваться более одного раза):

ruby -I missing_dir_1 -I missing_dir_2 your_script.rb

Edit: Возможно, хотя я еще не проверял это, установив гем Excelsior с sudo, вы поместили его в каталог, недоступный для работы с ruby ​​без sudo. Попробуйте sudo ruby your_script.rb.

1 голос
/ 15 июня 2011

Чтобы узнать, являются ли эти два исполняемых файла разными версиями ruby ​​(как подозревают некоторые), попросите его сделать

puts RUBY_VERSION
1 голос
/ 14 июня 2011

То, что сказал Маро.

Вы также должны попробовать:

ruby -e 'puts $LOAD_PATH' 

..., чтобы увидеть, в чем различия.

Редактировать: Возможно ли эточто у вас установлены две разные версии ruby?try:

type -a ruby
type -a irb

Чтобы увидеть, ссылаются ли они на другой исполняемый файл, например, 'irb1.8'.

0 голосов
/ 14 июня 2011

Я думаю, что irb и ruby ​​как-то запускают разные версии ruby. gem env также может помочь.

...