Согласно rubydoc, если аргумент, переданный Pathname # join (или Pathname # +), является абсолютным, путь получателя метода полностью игнорируется. Пример:
Pathname('/home/foo').join '/etc/passwd'
# => #<Pathname:/etc/passwd>
но
File.join('/home/foo', '/etc/passwd')
# => "/home/foo/etc/passwd"
Путь, как правило, приятно использовать, но его поведение при соединении очень раздражает, и я не могу вспомнить, когда бы я хотел, чтобы это произошло.
Существует ли существующий метод, который действует как File.join? Он должен работать с путевым именем и строкой.
Такое подробное решение недопустимо:
Pathname( File.join(pn, '/etc/passwd') )
Я могу принять патчи обезьян, но они должны быть лучше, чем это:
class Pathname
def safe_join(other)
Pathname.new(File.join(self, other))
end
end