rails スラッシュを複数挟んでもnot foundにならない

同僚から


Rails のルーティングは連続するスラッシュは単一扱いされるらしい。

localhost:3000/utilities///////hoge/39

の様にスラッシュを複数挟んでもnot foundにならないのはなんでなん?


という質問を受けたので、備忘録として書いておきます。

僕が調べた感じ、railsの名前解決の流れは

https://qiita.com/kkyouhei/items/1203f5aa521c065a7097

らしい。

そこで通る

Journey::Router::Utils.normalize_path(path)

にて

 def self.normalize_path(path) 

path = "/#{path}"
path.squeeze!('/')
path.sub!(%r{/+\Z}, '')
path = '/' if path == ''
path
end

https://github.com/rails/journey/blob/master/lib/journey/router/utils.rb#L14

引数に含まれる文字が複数並んでいたら 1 文字にまとめる

.squeeze!('/')をしているから

https://docs.ruby-lang.org/ja/latest/method/String/i/squeeze.html

履歴にも残してはいけないものを書いていたので上げ直しです。

ごめんなさい