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 を外す提案をしたところで今日は終わり。

渋谷.rb[:20170315]

渋谷.rb[:20170315]に行った。会場はいつものピクスタさん。

shibuyarb.doorkeeper.jp

いつものように、各々持ってきた宿題をしたり、気に掛かった点を雑談したり、発表を聞いたりといった感じで過ごしていた。

自分は、oracle-enhanced の ISSUE に対するバックポート PR を作ったり、Rails 5.1.0 へのアップグレードに向けた話をしたり、発表を聞いたりして過ごしていた。

Rails 5.1.0 へのアップグレードに向けた話の方は、資料があるわけではなく数日前の日記など使っての話をしていた。

この時に話していた AR::DirtyAS::Duration の警告ログのうち、AS::Duration の方は、懇親会から帰宅したら警告ログを出さないような PR が出てマージされていたので、なかなか Edge 感あった。

github.com

AR::Dirty の方は、いまのところぼちぼち対応して行く必要があると思う。というかこのままリリースされれば、将来的な大きな変更になるのと思うので早いうちに慣れて行けると良さそう。

雑談のひとつであった警告ログをどうしましょうねという話への回答として、量によってはいったん警告を止めるパッチを手元にあててアップグレードを進めてみるのはどうかという考えは参考になった。

Rails (OSS) パッチ会 #5

Rails 5.1.0 (現在 beta1) にアップグレードする際の警告ログについて見てたりしていた。

いまのところ以下の2つの変更に伴う警告ログが、ログ川の双璧になりうる印象。

Deprecate implicit coercion of ActiveSupport::Duration

github.com

出力されるログは以下。

DEPRECATION WARNING: Implicit coercion of ActiveSupport::Duration to a Numeric is deprecated and will raise a TypeError in Rails 5.2.

2017年3月16日追記

https://github.com/rails/rails/pull/28425 でこちらの警告ログの川は消えていた。

Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks

github.com

こちらの出力されるログの例。

DEPRECATION WARNING: The behavior of `attribute_changed?` inside of after callbacks will be changing in the next version of Rails. The new return value will reflect the behavior of calling the method after `save` returned (e.g. the opposite of what it returns now). To maintain the current behavior, use `saved_change_to_attribute?` instead.

アプリケーションに限らず依存 Gem でも出力されるものなので、CarrierWave に出ている PR のように見かけた警告を消して行けるとよさそう。

劇場版 ソードアート・オンライン -オーディナル・スケールを観た (2回目)

劇場版の SAO の2回目を観た。最初に観ようとしたときは自動券売機でチケットを取り忘れていたので、チケットの購入は3回目になる。

f:id:koic:20170314233837p:plain:w300

前回と変わって今回の来場者特典は100ページのオリジナル小説だったので得した気持ちだった。