GW にやったことについて、GitHub から辿れることを中心に書き残しておく。
.rubocop.yml で ERB を書けるようになるパッチをレビューしてマージした。
こんな書き方ができるようになる。
AllCops: Exclude: <% `git status --ignored --porcelain`.lines.grep(/^!! /).each do |path| %> - <%= path.sub(/^!! /, '') %> <% end %>
Active Record Oracle enhanced adapter に対する upstream の日次動向チェックで動きがあったので追随した。
以前から気にはなっていた Active Record Oracle enhanced adapter のテスト時の警告を抑制した。
.rubocop.yml で無効になっている部署に対して、一部の cop を有効にできるようにするパッチをレビューしてマージした。べんり。
Layout/ConditionPosition
cop の auto-correct を実装した。
以下のようにマルチバイト文字への振る舞いが等価でないため Performance/Casecmp
cop を unsafe にした。
'äöü'.casecmp('ÄÖÜ').zero? #=> false 'äöü'.casecmp?('ÄÖÜ') #=> true
レガシー API の content_tag
を tag
にする Rails/ContentTag
cop をレビューしてマージした。PR の根拠となるリソースなど示されているためレビューの手間が少なくなっていたのでよかった。
ドッグフーディングとして実 Rails アプリケーションに適用してみて良い感じだった。
2020年5月7日追記
偽陽性がありそうだったので、調べるつもり。
Style/GuardClause
cop の誤ったメッセージを修正した。
Lint/EnsureReturn
cop の auto-correct を実装した。
RailsConf 2020.2 COUCH EDITION の視聴をはじめた。往年の Kent Beck ファンとして濃密な 15min の講演がよかった。
rubocop-hq/rubocop#7925 が複合要因のイシューで未解決部分があった Style/GuardClause
cop の偽陽性を修正した。
Performance/DeletePrefix
cop と Performance/DeleteSuffix
cop を実装した。
bad ケースと good ケースは以下。
# bad str.gsub(/\Aprefix/, '') str.gsub!(/\Aprefix/, '') str.gsub(/^prefix/, '') str.gsub!(/^prefix/, '') # good str.delete_prefix('prefix') str.delete_prefix!('prefix')
ベンチマークは以下。
% ruby -v ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-darwin17] % cat bench.rb require 'benchmark/ips' Benchmark.ips do |x| str = 'foobar' x.report('gsub') { str.gsub(/bar\z/, '') } x.report('gsub!') { str.gsub(/bar\z/, '') } x.report('delete_suffix') { str.delete_suffix('bar') } x.report('delete_suffix!') { str.delete_suffix('bar') } x.compare! end % ruby bench.rb Warming up -------------------------------------- gsub 46.814k i/100ms gsub! 46.896k i/100ms delete_suffix 211.337k i/100ms delete_suffix! 208.332k i/100ms Calculating ------------------------------------- gsub 546.500k (± 1.3%) i/s - 2.762M in 5.054918s gsub! 551.054k (± 1.2%) i/s - 2.767M in 5.021747s delete_suffix 4.780M (± 1.1%) i/s - 24.092M in 5.040850s delete_suffix! 4.770M (± 1.1%) i/s - 23.958M in 5.022823s Comparison: delete_suffix: 4780060.8 i/s delete_suffix!: 4770419.3 i/s - same-ish: difference falls within error gsub!: 551054.2 i/s - 8.67x slower gsub: 546500.1 i/s - 8.75x slower
ドッグフーディングとして rails/rails リポジトリと、実 Rails アプリケーションで実行してみて良い感じの首尾だった。
Rails 6.0.3 がリリースされたので、ホームページを更新した。
GitHub 社の Codespaces のベータの waitlist にならんだ。
まだ PR にしていないセルフレビュー中のパッチや、仕掛かりや手戻りのパッチなど手元にあるので、それらは今後引き続きといった感じ。
カンファレンスとしては、去年のゴールデンウィークは RailsConf 2019 のためミネアポリスに行っていたけれど、RailsConf 2020 はオンラインで聞くゴールデンウィークだった。