That looks perfectly correct, right? Here's the error message:
The recognized options <{"extension"=>[".mp3"],
"action"=>"index",
"controller"=>"frogs",
"filename"=>"1"}> did not match <{"extension"=>["mp3"],
"action"=>"index",
"controller"=>"frogs",
"filename"=>"1"}>, difference: <{"extension"=>["mp3"]}>
Ooookay. It says the "difference" is the part that's exactly the same - "extension"=>["mp3"]!
That looks perfectly correct, right? Here's the error message:
The recognized options <{"extension"=>[".mp3"],
"action"=>"index",
"controller"=>"frogs",
"filename"=>"1"}> did not match <{"extension"=>["mp3"],
"action"=>"index",
"controller"=>"frogs",
"filename"=>"1"}>, difference: <{"extension"=>["mp3"]}>
Ooookay. It says the "difference" is the part that's exactly the same -
"extension"=>["mp3"]!
Yeah, I've always loved that one
How to fix?
*extension is mopping up the dot, because filename matches everything
up to but not including a dot, and *extension gets everything else
(and it all gets put into one string, because the dot doesn't separate
elements inside the glob).
So you need either :filename.*extension in the route string, or
['.mp3'] in the test.