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

Ruby 2.4.1がリリースされた

先日の大江戸 Ruby 会議で、バグフィックスの入った Ruby 2.4.1 のリリースについて少し話が取りあげられていて熱が冷めやらないうちにリリースされた。ありがとうございます。

直接間接で使っている ruby-build (rbenv) と RVM にそれぞれの PR を出し、それぞれすぐにマージしてもらえている。

ruby-build (rbenv)

自分のローカル環境で使っている ruby-build の方は、PR のもとになる内容で rbenv install 2.4.1 を手元で試して良さそうだったので PR を出したもの。

github.com

もう少し話すと手元の開発環境では ls -l ~/.rbenv/plugins/ruby-build すると以下のような結果が出るように ghq で管理しているリポジトリへの symlink にしているので、手元での実績が先にある形の PR になる。

/Users/koic/.rbenv/plugins/ruby-build -> /Users/koic/src/github.com/rbenv/ruby-build

すぐにマージしてもらえているので (ありがとうございます!) 、いつもの Ruby バージョンのリスト更新となる cd ~/.rbenv/plugins/ruby-build && git pull && cd - 的なもので、ruby-build を最新にして rbenv install 2.4.1 でインストールできる。

RVM

RVM についてローカル環境では使っていないものの、いつもお世話になっている Travis CI でもちいられているため PR を出した。

github.com

こちらは Unreleased でリリース待ちなので、バージョニングリリースとしては、しばしお待ちという感じだと思う。

Ginza.rb 第45回

Ginza.rb 第45回 もうすぐやってくる!Rails5.1を見ておこうに参加した。会場はみんなのウェディングさん。

ginzarb.doorkeeper.jp

y-yagi さんによって Rails 5.1 の変更点がまとめられた話は、とてもひき込まれる内容で濃厚な時間を過ごすことができた。

Rails のリリースに関しては、まず Basecamp での実績が先にあり…」といったスライドにはあらわれない付加価値の話も聞くこともできて (RailsHarvested Framework であることを改めて思い出した) 、とても勉強になる会でした。ありがとうございました。

Rails 5.1.0(Edge)とHaml 4系の組み合わせ警告ログ

Rails 5.1.0 (Edge) と Haml 4 系の組み合わせて、rails c /rails s / rails r といったコマンドを実行すると以下のような警告ログが出る。

% bunde exec rails c
DEPRECATION WARNING: ActionView::Template::Handlers::Erubis is deprecated and 
will be removed from Rails 5.2. Switch to ActionView::Template::Handlers::ERB::Erubi 
instead. (called from <module:Haml> at /Users/koic/.rbenv/versions/2.5.0-dev/lib
/ruby/gems/2.5.0/gems/haml-4.0.7/lib/haml/helpers/safe_erubis_template.rb:3)
Loading development environment (Rails 5.1.0.beta1)

この警告自体は Action View の CHANGELOG.md に書かれているように ERB ハンドラが Erubis から Erubi に変更されることによるもののようだ。

Haml 5.0.0 (beta.2) では railtie.rb の以下のコードで Haml::SafeErubiTemplateHaml::SafeErubisTemplate を使い分けるようになっているので、Haml 5.0.0 (beta.2) を使えばこの警告ログは消えることになる。

if defined? Erubi
  require "haml/helpers/safe_erubi_template"
  Haml::Filters::Erb.template_class = Haml::SafeErubiTemplate
else
  require "haml/helpers/safe_erubis_template"
  Haml::Filters::Erb.template_class = Haml::SafeErubisTemplate
end

github.com

Oracle enhanced adapter 1.6.8 をリリースした

Rails 4.2.8 で Ruby 2.4 をサポートしたことに伴い、Unified Integer の警告ログが出るようになったというフィードバックの ISSUE をきっかけに、その ISSUE で yahonda さんに Rails 4.2 系に対応する oracle-enhanced 1.6 系のリリースの相談をしてみたのがきっかけ。

Rails 5.0 系に対応する oracle-enhanced 1.7 系からのバックポートを中心とした、だいたい1年ぶりの oracle-enhanced 1.6 系リリースで、Unified Integer の警告ログ以外にもいくつか修正点など入っている。

github.com

Google Groups にアナウンスした投稿が何故か反映されていない (Google Groups 弱者すぎる) ものの、Gem 自体のリリースはできているので Ruby 2.4.0 の Unified Integer まわりの警告が原因で Rails 4.2.8 にアップグレードできてない、Rails 4.2 系かつ Oracle ユーザーは特にアップグレードするのがおすすめ。

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

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