Как встроенный URI в Ruby, так и гем Addressable делают это недолго.Я предпочитаю Addressable, потому что он более полнофункциональный, но URI встроен.
require 'uri'
URI.join('http://pupeno.com/blog', '/about') # => #<URI::HTTP:0x00000101098538 URL:http://pupeno.com/about>
или
require 'addressable/uri'
uri = Addressable::URI.parse('http://pupeno.com/blog')
uri.join('/about') # => #<Addressable::URI:0x806704a0 URI:http://pupeno.com/about>
Рекомендуется использовать поставляемые методы join
, потому что онисделать некоторую проверку вменяемости, чтобы убедиться, что возвращенный адрес вменяемый.Непосредственное присвоение пути может привести к поломке, если у вас есть относительный URL-адрес и просто замените старый путь.join
примет это во внимание и заменит или объединит, в зависимости от того, что подходит.