Рубиновая странная ошибка

Всякий раз, когда мне нужен файл в 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. Помогите, очень надоела эта проблема! Заранее спасибо, эл.

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


person Ell    schedule 23.10.2010    source источник
comment
Мой файл? он находится в: home/elliot/programming/Ruby Projects/Graph Data Structure/Graph.rb   -  person Ell    schedule 23.10.2010


Ответы (3)


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

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

$: << '/my/lib/path'
require 'mylib'
person SteveRawlinson    schedule 23.10.2010
comment
Спасибо, это устранило проблему. Извините за то, что я нуб, я только что перешел на Ubuntu из Windows XP, и мне нужно немного привыкнуть, особенно к системе установки пакетов! - person Ell; 23.10.2010

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

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

$LOAD_PATH << '.'

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

person Jörg W Mittag    schedule 23.10.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!

person jayands    schedule 28.12.2010