Что делает $:. push в ruby?

Я нашел это в файле Gemspec графопостроитель. Что делает следующая строка?

$:.push File.expand_path("../lib", __FILE__)
require "surveyor/version"

Почему делает $:.push вещь? Для меня это выглядит как просто requires файл ../lib/surveyor/version. если да, не могу ли я просто заменить это следующей строкой?

require File.expand_path('../lib/surveyor/version', __FILE__)

Разве обе эти вещи? Если нет, то какая разница?

Ответы

Ответ 1

$: - путь загрузки Ruby, поэтому он фактически добавляет вложенную папку /lib папки, в которой __FILE__ находится в этом массиве, так что другие файлы из этого драгоценного камня могут быть require d.