Ruby Странная Ошибка - PullRequest
       36

Ruby Странная Ошибка

0 голосов
/ 23 октября 2010

Всякий раз, когда мне требуется файл в ruby ​​или irb, я получаю эту ошибку:

LoadError: no such file to load -- (insert any filename).rb
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from (irb):1
    from /usr/bin/irb1.9.1:12:in `<main>'

Это происходит, даже если файл существует, я использую ruby1.9.1 и, насколько мне известно, я не установил rubygems.Я работаю на Ubuntu 10.10 Maverick Meerkat.Пожалуйста, помогите, эта проблема очень раздражает!Заранее спасибо, ell.

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

Ответы [ 3 ]

4 голосов
/ 23 октября 2010

В Ruby 1.9.2, который, я думаю, является версией, которую вы используете, текущий каталог больше не находится в $LOAD_PATH. Если вы хотите require файлов относительно пути к файлу, в котором находится вызов require, вы должны использовать require_relative вместо.

Если вы действительно хотите require файлов относительно текущего каталога, то вы можете добавить текущий каталог в $LOAD_PATH следующим образом:

$LOAD_PATH << '.'

Однако, это изменение было сделано по причине, поэтому вы не должны делать это легко. В конце концов, это заставит ваше приложение вести себя более или менее случайным образом, в зависимости от того, в каком каталоге вы оказались, когда запускали приложение. Хуже того, злоумышленник может заставить вас выполнить произвольный код от его имени, если он может заставить вас запустить приложение из каталога, находящегося под его контролем.

1 голос
/ 23 октября 2010

Rubygems устанавливается с ruby ​​1.9 по умолчанию.

Убедитесь, что файл, который вы пытаетесь загрузить, находится в каталоге, указанном в переменной $: или укажите полный путь к файлу в require.Или добавьте каталог в $: явно:

$: << '/my/lib/path'
require 'mylib'
0 голосов
/ 28 декабря 2010

Вы используете p0? Я получил это лот на ruby-1.9.2-p0. Попробуйте выполнить несвязанный (например, не использовать --with-baseruby) ./configure набор, другими словами

curl ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p136.tar.gz | tar xz
cd ruby-1.9.2-p136
./configure
make -j2
sudo make install

с самого начала. Для меня это исправило syck отсутствия (хотя другая проблема поднялась :/), yaml, даже stringio и zlib!

...