Wygląda kontroli URI.join na obecność znaku slash "/', aby dowiedzieć się, folder na ścieżce URL. Tak więc, jeśli pominąłeś końcowy ukośnik "/" w ścieżce, to nie potraktuje go jako folderu i go pominie. Sprawdź to:
URI.join("https://service.com", 'omitted_part', 'omitted_again', 'end_point_stays').to_s
# =>"https://service.com/end_point_stays"
Tu, jeśli staramy się DOŁĄCZ słowami tylko pierwsze i ostatnie params zostać tylko, reszta są pomijane, gdzie pierwszy param jest bezwzględny uri z protokołem & ostatniego param jest punkt końcowy .
Tak więc, jeśli chcesz dołączyć składnik folderu, dodawania końcowy ukośnik w każdym folderze składnika, to tylko on jest uważany za część toru:
URI.join("https://service.com", 'omitted_no_trailing_slash', 'omitted_again', 'stays/', 'end_point_stays').to_s
# => "https://service.com/stays/end_point_stays"
Jeszcze jedna ciekawa rzecz do rozważenia jest że jeśli dostarczenie ścieżki w pierwszym parametrze działa następująco:
URI.join("https://service.com/omitted_because_no_trailing_slash", 'end_point_stays').to_s
# => "https://service.com/end_point_stays"
URI.join("https://service.com/stays_because_of_trailing_slash/", 'end_point_stays').to_s
# => "https://service.com/stays_because_of_trailing_slash/end_point_stays"
URI.join("https://service.com/safe_with_trailing_slash/omitted_because_no_trailing_slash", 'end_point_stays').to_s
# => "https://service.com/safe_with_trailing_slash/end_point_stays"
Check out: http://stackoverflow.com/questions/8900782/how-do-i-safely-join-relative-url-segments –