Lint/SplatKeywordArguments cop を実装した

今月の Rails/OSS パッチ会で発注のあった cop を実装した。

github.com

Ruby の以下のコミットで入っている EXPERIMENTAL の警告のエミュレーションとなる。

https://github.com/ruby/ruby/commit/a23eca2

% ruby -we "def m(a) end; h = {foo: 1}; m(**h)"
-e:1: warning: passing splat keyword arguments as a single Hash to `m'

EXPERIMENTAL というもののこの警告を消すような対応が入っていたりしているので、cop 化しての PR を開いた。

いちおう手元のアプリケーションでのドッグフーディングで極めて少量の警告だったことと、勤務先が提供している某サービスの実装で警告ゼロだったこともありデフォルト Enable としている。

PR の説明に書いたとおり splat keyword arguments かそうでないかで振る舞いの互換はないため、autocorrect は意図して実装してない。

秒速5センチメートルを観た

先日、台湾に行ったときに RuboCop を使っていないことと、秒速5センチメートルを観ていないことを驚かれたので、秒速5センチメートルを観たりしていた。

秒速5センチメートル [Blu-ray]

秒速5センチメートル [Blu-ray]

Asakusa.rb 第460回

昨日のパッチ会でかみぽさんから発注をもらった Cop の実装をやろうと思っていたところ、シュールなバグ Issue が上がっていたのでそちらの修正を先にしていたりした。

github.com

あとは RubyKaigi 2018 の LT の CFP を書く秒速さんを応援していたり、RubyKaigi の講演準備進捗どうですかを確認しあったり、麻雀的な活動を遠くから眺めていたりした。

終わった後は秋田に行く zzak の壮行会に参加した。新天地でもごきげんで行きましょう。

Rails / OSS パッチ会 (2018年5月)

yahonda さんに Oracle enhanced adapter のパフォーマンスリグレッションとして立っている Issue について聞いたりしていた。

github.com

パフォーマンスリグレッションの要因のひとつとして推測される Oralce の統計情報について、Oracle クライアントから以下のように統計情報を削除した直後は処理時間が掛かり、統計情報を集めたあとは処理時間が早くなるのを、Rails 5.1 と 5.2 それぞれで見たりしていた。

> exec dbms_stats.delete_dictionary_stats() # 統計情報の削除
> exec dbms_stats.gahter_dictionary_stats() # 統計情報の収集

推測の裏付けに関する手法のひとつについて勉強になりました。ありがとうございます。


来月の Rails/OSS パッチ会は RubyKaigi 2018 が明けてしばらくの 6/18 (月) 17:00-19:00 です。

1回休み

ghq + gem-src で管理しているローカルリポジトリag 'ERB\.new.*,.*' と false positive 上等の雑なパターンマッチで串刺し検索してヒットした Gem のうち、第2引数以降を使っていたケースにパッチを送ったりしたくらいで1回休み。

とてか05の講演準備ができた

RubyKaigi 2018 の発表準備と並行して進めていた一方の準備ができた。

『バディ (相棒) テスト』と『熟練度とカン』の2つがアジェンダです。