読者です 読者をやめる 読者になる 読者になる

Rails 4.2以上でないとArelもUnified Integer対応をしていない

Active Record Session Store の Travis CI で、Ruby 2.4.0 が動いていなかったようなので出した PR の話。

github.com

この PR の CI 結果で想定の範囲外のテストの一部失敗があり、それは去年見知った以下のエラーが原因になっていた。

TypeError (Cannot visit Integer):
  /home/travis/build/rails/activerecord-session_store/gemfiles/vendor/bundle/ruby/2.4.0/gems/arel-5.0.1.20140414130214/lib/arel/visitors/visitor.rb:28:in `rescue in visit'
  /home/travis/build/rails/activerecord-session_store/gemfiles/vendor/bundle/ruby/2.4.0/gems/arel-5.0.1.20140414130214/lib/arel/visitors/visitor.rb:22:in `visit'
  /home/travis/build/rails/activerecord-session_store/gemfiles/vendor/bundle/ruby/2.4.0/gems/arel-5.0.1.20140414130214/lib/arel/visitors/to_sql.rb:330:in `visit_Arel_Nodes_Limit'

このログにあるように警告ログが出るというレベルではなく、エラーが起きて動かないというレベルとなる。サポートが終わっている Rails 4.0 と Rails 4.1 向けに今からバックポートするというのはおそらくないだろうなと思うのと、今回は AR にまつわる Gem を対象とした話なので Arel 単体の Gem としてのサポートの話は置いておくことにした。

Rails 4.2 (AR 4.2) 向けとなる Arel 6.0 に以前出していたバックポート PR をトリガーに、実際に Arel 5.0 と Arel 4.0 にバックポートがないことの裏取りのうえ、サポートが終わっている Rails 4.0 と Rails 4.1 向けの CI を外す提案をしたところで今日は終わり。