Sinatraアプリにこのフィルターがあります:
before '/:locale/*' do
# stuff...
request.path_info = params[:splat]
end
つまり、URLのロケール部分を取得して、そこにないかのようにアプリを続行させたいのです。(もちろん、ビューをレンダリングするときにロケールを使用します。)
これはRuby1.8.7では正常に機能しますが、スプラットが単なる文字列ではなく1つの項目を持つ配列であるため、>=1.9で機能しなくなります。私はparams[:splat].first
それを機能させるために使用しなければなりませんでした。
私の質問は、この不一致がどこから来ているのかということです。それは単にRuby1.8対1.9のものですか?それともシナトラはどういうわけか関与していますか?
将来的には、このようなことをもっと簡単に修正できるようにしたいと思っています。