Понимание путей загрузки Ruby
Я немного смущен тем, почему мой проект не может загрузить нужные ему файлы, это действительно простое дерево проектов:
processor/
bin/
lib/
processor.rb
processor/
mapper.rb
reducer.rb
и меня выглядит так:
require 'processor/mapper'
require 'processor/reducer'
class Processor
end
и только для тестирования этого файла mapper выглядит так:
class Mapper
def run
puts "running map"
end
end
но работает ruby lib/processor.rb
результаты:
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- processor/mapper (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from lib/processor.rb:3:in `<class:Processor>'
from lib/processor.rb:2:in `<main>'
3 ответа:
Рубин
$LOAD_PATH
не будет включать в свойlib
каталог по умолчанию (хотя именно там находится файл, который вы запускаете).вы можете сказать
ruby
переводчик, чтобы включить его:ruby -Ilib lib/processor.rb
или вы можете добавить
lib
папка к пути загрузки:$LOAD_PATH.unshift(File.dirname(__FILE__)) require 'processor/mapper' ...