Я начинаю изучать Ruby, одна вещь, которую я не понимаю, почему относительный путь для директивы require не работает в ruby. Это то, что работает почти на каждом языке сценариев, который я сейчас (JSP, PHP...). Я объясню с реальным примером. У меня есть папка с именем фигуры, которая содержит 3 класса форма, прямоугольник и квадрат. У меня есть еще один файл test_shapes.rb, откуда я звоню и тестирую свои классы. Когда я импортирую свои классы в основной файл следующим образом:
require "./shape"
require "./rectangle"
require "./square"
Я получил ошибку для не найденных файлов. Когда я включаю имя моей подпапки, например:
require "./shapes/shape"
require "./shapes/rectangle"
require "./shapes/square"
Код отлично работает. Потому что я указал весь путь к корневому каталогу проекта (папка lib, я думаю). Когда я включаю, я включаю абсолютный путь к жесткому диску, например:
require "#{File.dirname(__FILE__)}/shape"
require "#{File.dirname(__FILE__)}/rectangle"
require "#{File.dirname(__FILE__)}/square"
Он отлично работает.
Итак, я просто хочу объяснить, почему первый метод импорта (относительный путь к текущей папке) не работает.