東京✈️沖縄

沖縄Ruby会議02参加のため前乗りで移動していた。

飛行機の中では RuboCop でいくつかレポートされているバグフィックスを行ったりしてた。これはちょうど昨日とかその前にも見ようとしていて、よく分からなくて飲みに行ってしまっていた分でもあった。

github.com

ものとしてはパフォーマンス向上のためのパッチだったものにバグが混入していたもので、パフォーマンスを維持しつつの修正が手間そうだったので、改善したパフォーマンスが犠牲になるものの部分的に revert してまずはエラーが出ないようにしたもの。テストケースを追加しているので、そのテストケースをパスする形で再度パフォーマンス改善を見てもらえればという感じでの PR となっている。

沖縄に着いた後は晩御飯の予定をしていたかくたにさんと合流して、国際通りの地元っぽい居酒屋に行ったりしていた。オリオンビール泡盛と飲んだ後に追加の泡盛一合を頼んだら、半分より少ないくらい残っている4合瓶で提供されて「これは...」となっていたところ、秒速さんが援軍にきてくれて食べ残し、飲み残しなくお会計することができた。

沖縄といえばシメはラーメンではなくステーキらしいので、シメのステーキを食べて沖縄初日は終了。

バグを踏んだ時のフィードバック先を記しておく

RuboCop の Issue レポートにあったバグの再現をしていたときに、エラーメッセージにフィードバック先の URL が載っていなくて、これユーザーが Google 検索のひと手間をやっているだろうなと思って Issue tracker の URL を追加しておいた。

github.com

Before

Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
Mention the following information in the issue report:
0.53.0 (using Parser 2.5.0.3, running on ruby 2.5.0 x86_64-darwin17)

After

Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
https://github.com/bbatsov/rubocop/issues

Mention the following information in the issue report:
0.53.0 (using Parser 2.5.0.3, running on ruby 2.5.0 x86_64-darwin17)

rubocop.gemspec に metadata が記してあるので、URL べた書きではなく以下のような形で URL を使うようなパッチにしている。

Gem.loaded_specs['rubocop'].metadata['bug_tracker_uri']

パッチ書きと登壇準備をしたりしていた

昨日リリースされた RuboCop 0.53.0 への false positive を直した本日分は以下。

github.com

既存の on_str を使った実装へのパッチとしては再帰を使って、その文字列が使われている引数がプレースホルダーの引数かを検証するアプローチがシンプルかと思いそのように実装をした。

あとは沖縄Ruby会議02の発表スライドのまとめ上げと、Rails Developers Meetup 2018 のスライドづくりを行ったりしていた。

Ruby 2.6とRails 6.0それぞれで非推奨になるAPI

Ruby 2.6 で推奨される ERB.new のインタフェースに適合するパッチを書いたり、Rails 6 で非推奨になる update_attributes(!)update(!) に置き換えるパッチを書いたりしていた。ERB.new の変更については、その後に出している以下のパッチを参照。

github.com