Require не может найти файл .rb, который тот же каталог
Как именно работает команда require в Ruby? Я тестировал его со следующими двумя файлами, которые находятся в одном каталоге.
test.rb
require 'requirements'
square(2)
requirements.rb
def square(x)
x*x
end
Но когда я запускаю ruby test.rb, пока я в том же каталоге, что и файлы "test.rb" и "requirements.rb", я получаю сообщение об ошибке:
/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- requirements (LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from test.rb:1:in `<main>'
который, я думаю, означает, что он не может найти файл requirements.rb. Но это в том же каталоге, что и test.rb! Как это исправить?
Большое спасибо заранее. Приношу свои извинения за такие вопросы noob.
Ответы
Ответ 1
IIRC, ruby 1.9 не включает текущий каталог ('.') в LOAD_PATH. Вы можете сделать одно из следующих действий:
# specify relative path
require './test1'
# use relative method
require_relative 'test1'
# add current dir to LOAD_PATH
$LOAD_PATH.unshift '.'
require 'test1'
Ответ 2
Я тоже только начал изучать, как работает рубин, поэтому я не совсем уверен, помогает ли это. Но попробуйте require_relative вместо требования, и я думаю, что это сработает.
Afaik требует поиска в рубиновой библиотеке.