annotate_modelsのコメント追加漏れをなくす

モデルにはスキーマ、config/routes.rbには現在のroutesを出力するannotateというgemを使っているのだが、routes.rbは特に修正漏れをしてしまいがち。
いつの間にか乖離しているとコメントそのものへの信頼性がなくなるので修正漏れをなくしたい。

対策としてCIでチェックするようにした。
bundle exec annotate && git diff --exit-code app/models config/routes.rb

特に問題がないコードであれば、上記で済むのですが導入したプロジェクトでは、自分の開発環境での出力とCI上での出力にdiffがあることがわかった。
調べると、activeadmin用のroutesを定義する ActiveAdmin.routes(self)に原因があった。ActiveAdmin.routes(self)の中では、環境毎によって出力が変わるDir.[]を使っていたことで実行する環境でdiffが出ていたのだ。
ちなみに、新しいruby(バージョン忘れた)ではDir.[]の出力はソートした順番で返すとのこと。(ruby-jpで聞いた)

本家にプルリクを送ったけど今のところスルーされている。 https://github.com/activeadmin/activeadmin/pull/6124

プルリクがマージされるまでは下記パッチを当てることでdiffをなくすことができる。

module ActiveAdminSortFiles
  def files
    super.sort
  end
end
ActiveAdmin::Application.prepend(ActiveAdminSortFiles)

おわり