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 はオンラインで聞くゴールデンウィークだった。