rails6.0から、variantとhandlerが違う場合に異なるテンプレートが選ばれるようになった

https://github.com/rails/rails/issues/37021

再現コードはissueに書いている通りで。 variantとhandlerが違うとこれが起きる。

railsのソースをステップ実行して確認してると、上記の条件でテンプレートが返ってくる順番が確かに変わっていた。

どうやら、バリアント違いのテンプレートはハンドラは一緒やろ〜〜みたいなノリっぽいです。
issueにコメントを誰もしていないので、みなさんはハンドラーを揃えている、ということがわかる。

ちなみに、うちのプロジェクトはmustacheとerbが混在している。一応mustacheをやめるという意思決定はできているのだが、書き換えが果てしなくめんどくさすぎるので、mustacheを生かし続けてた結果、 index.html+mobile.mustacheindex.html.erb というテンプレート構成になっていた。その結果、本不具合を踏んでしまった。

mustacheの駆逐よりも、先にrails6.0にしたいと思った(セキュリティパッチ的な意味で)ので、5.2と同じ動作にするためのパッチを作ってみたけど、mustacheテンプレートの出力で文字をしてしまった。ファイルの順番を変えるだけでは不十分で、ハンドラー周りも何か変更が必要らしい。(意味わからん)
エラーが起きるならまだしも意味不明すぎるので、諦めてmustacheの駆逐を先にすることにした。

class ActionView::OptimizedFileSystemResolver
      def find_template_paths_from_details(path, details)
        query = build_query(path, details)
        find_template_paths(query)
      end
 end
end

おわりです

<追記>
文字化けするのはmustacheがrails6に対応できていなくてバグっているから、の可能性が高いということがわかった。