RuboCopファミリーと周辺の更新 (GW 2021編)

GW に更新のあった RuboCop 周辺のアップデートについてざっくりまとめておく。 Parser 3.0.1.1 github.com RuboCop が依存する Ruby の構文解析の Gem で、Ruby 3.0 で入った endless method definition のバグ修正と Ruby 3.1 (dev) のサポート追加をして…

RuboCop Performance 1.11 をリリースした

RuboCop Performance 1.11 をリリースした。主な変更点は以下。 Ruby 2.4 のサポートを終了した Ruby 2.7 で追加された Enumerable#filter_map への Cop を追加した github.com 前者はそのままなので、後者について記す。 Enumerable#filter_map に対応づけ…

RuboCop Oracleをリリースした

RuboCop Oracleを実装してリリースした。 github.com 長年 RDBMS に Oracle (Active Record Oracle enhanced adapter) を使った運用をしているが、これは無停止リリースを行うにあたってのマイグレーションの tip を cop にして含んでおいたもの。 最初の v0…

Ruby 3.0.1, 2.7.3, 2.6.7, 2.5.9 がリリースされた

Ruby 3.0.1, 2.7.3, 2.6.7, 2.5.9 がリリースされた。安定版へのメンテナンス、リリースありがとうございます。 https://www.ruby-lang.org/ja/news/2021/04/05/ruby-3-0-1-released/ https://www.ruby-lang.org/ja/news/2021/04/05/ruby-2-7-3-released/ ht…

RuboCop 1.12.1 がリリースされた

先月のパッチ会で @osyo-manga さんが、Fukuoka.rb 200回 LT 大会 (だったと思う) あたりで話題に上がっていたらしい RuboCop のバグに関するパッチ話を持ってきてくれて、その流れで後日 PR を開いてくれた以下の修正パッチが目玉。 github.com 問題として…

社内向けに「達人プログラマーの基礎技術勉強会」を行った

5年くらい前にアジャイルジャパンの長崎サテライトで登壇した内容を、当時と組織メンバーの顔ぶれも変わっていることもあり社内向けに話した。 Gate of Agile Web Development from Koichi ITO www.slideshare.net 参加メンバーからは「保守はバグ修正ではな…

Ruby のエイプリルフール新構文 2021

Downward assignments という名前で Ruby に提案された機能 (mame さん今年もありがとうございます) 。 p(2 * 3 * 7) #=> 42 ^^^^^var p var #=> 6 bugs.ruby-lang.org エイプリルフールということを失念していて「これは!」とおもしろく思った一方で思った…

`String#split`と`String#chars`の小咄

最近、String#split と String#chars まわりの Cop をメンテナンスしたり実装した際の、それらメソッドに関する知見を書き残しておきます。 String#split の小咄 RuboCop Performance に string.split(/re/) より string.split('re') の方が速いので、Cop に…

社内向けに「Rails Doctrine勉強会」を行った

Rails のテクニカルな話は、新機能がリリースされたり業務で困ったら調べたりなどで日頃から触れている一方で、そもそもの Rails の理念やコミュニティなどを焦点に触れるというのはあまりないのではと以前から思っていたので、勉強会という形で開催してみた…

CircleCIのビルドがトリガーされない誤制限について問い合わせた

ここ数日 CircleCI でトリガーが効かなくなって困っていたので問合せをサポートにリクエストをした。 今後、似た問題に当たった人が現れたとき自力解決は難しいと思うのと "CircleCI Maintenance" と検索しても、当然 CircleCI のメンテナンス情報しか出てこ…

ディレクトリの一括作成とブレース展開に関する豆知識

RuboCop で直した「おっ」と思ったバグ。シェルのブレース展開 {...} を使って複数ディレクトリを一括で作成する手法がある。業務で連番でのディレクトリ作成とか必要だったりするときに使えたりする。 % mkdir {a,z} % ls a z % mkdir {a..c} % ls a b c % …

移行アシスタントでMacBook Proを移行後に画面共有できない問題の解決

先日、移行アシスタントを使って MacBook Pro を移行したのだが、Web 会議や勉強会でオンライン画面共有できない問題が起きていた。 具体的に問題になった Web 会議ツールとしては Zoom アプリケーションと Google Chrome を使った Google Meet のふたつ。 W…

社内向けに「ソフトウェアの契約と見積り勉強会」を行った

5年くらい前に XP 祭りで登壇した内容を、当時と組織メンバーの顔ぶれも変わっていることもあり社内向けに話した。 俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜 from Koichi ITO www.slideshare.net 参加メンバーからは「3秒見積りは良くない…

RuboCop Performance 1.10 をリリースした

RuboCop Performance 1.10 をリリースした。 JST で 3月1日に 1.10.0 をリリースして、3月2日に 1.10.1 をバグフィックスリリースした。以下、2つの新 Cop が目玉です。 Performance/RedundantSplitRegexpArgument cop 機能リクエストがあがっていた Cop を…

RuboCopのGitHubオーガニゼーションがrubocopになった

「RuboCopのGitHubオーガニゼーションがrubocopになった」とか、どういうタイトルだと思うけれど、表題のまま。 歴史的には、bbatsov/rubocop だったものが、RubyKaigi 2018 のときに rubocop-hq/rubocop になって、今回念願の rubocop/rubocop に至ったとい…

社内向けに「スローテスト勉強会」を行った

スローテスト対策への熱が再燃してきていたので、Ruby関西 勉強会で以前に使ったスライドをベースにオンライン社内勉強会を行った。 スローテスト刑事 (デカ) from Koichi ITO www.slideshare.net やっぱりどのプロジェクトでも Feature テストが Rails アプ…

irbでオートハイライトやオートインデントがされないときに見直す設定

Ruby 2.7 で大幅に強化された irb でオートハイライトやオートインデント、マルチライン編集ができていない場合、~/.irbrc に以下のような設定が残っている可能性があります。 IRB.conf[:USE_READLINE] = true IRB.conf[:USE_READLINE] に true が設定されて…

RuboCop の Ruby 3.0 対応

構文解析まわりは Ruby 3.0 リリース以前に概ね対応されていると思うので、うまく解析できなかったらバグの可能性があります。その場合の初手としては Parser gem を 3.0.0.0 以上にすると解決するかもしれないので、bundle update parser をしても再現する…

`&& return` より `and return` を好む

かつての RuboCop は condition and return というコードに対して、condition && return にするようデフォルトでサジェスチョンしていた。 このサジェスチョンはおかしく見えたので、結構前に構成を変えてデフォルトで condition and return を受け入れるよ…

Rails 6.1で生成コードをRuboCop適用済みにする

Rails 6.1 がリリースされたので、y-yagi さんによる待望のパッチが使えるようになった。 PR にあるように使い方はシンプルで、Rails 6.1 での config/application.rb に以下の設定を足す。 config.generators.after_generate do |files| system('bundle exe…

Offers MagazineにOSS開発に関する記事を寄稿した

少し前に Offers さんより、RuboCop コミッターとしての OSS 開発に関する話というオファーをいただいて Offers Magazine に執筆した。文筆物では12年ぶりの新作。 offers.jp オファーいただいていた文字数に対して分量割増しで書いてたものの、自分の OSS …

RuboCop 1.5で導入された`SuggestExtensions`パラメータ

RuboCop 1.5で導入されたSuggestExtensionsパラメータについて記しておきます。 導入されたパッチは以下です。 github.com たとえば Bundler を使って RSpec を依存指定している一方で、RuboCop RSpec を使っていない場合は、以下のように RSpec に対応した…

インタラクティブ プレゼンテーション パターンズを再読した

Kaigi on Rails STAY HOME Edition で登壇した動画が公開された。公開作業ありがとうございます。 www.youtube.com Kaigi on Rails への登壇自体の話は以前書いたエントリに譲り、今回はプレゼンに関する『インタラクティブ プレゼンテーション パターンズ (…

Ruby 3.0.0-devでのActive Record Session Storeのエラー回避

Rails アプリケーションの Ruby 3.0 対応を裏ではじめている頃合いだと思うのですが、Ruby 3.0.0-dev (2020-10-21T09:10:14Z を使っていたけれど preview1 でも同様かも?) を使った Active Record Session Store で以下のエラーが起きた際のメモを書いてお…

RuboCop 1.0 がリリースされた

RuboCop 1.0 がリリースされた。 github.com 自分が最初にリリースを行った 0.93.1 が RuboCop 1.0 より前の最後のリリースになったというのも感慨深いものがあるけれど、さておきついに 1.0 になった。 よい節目なので RuboCop 1.0 と周辺に関するエントリ…

Nokogiriが1.11.0からプリコンパイル済みで配布される

Nokogiri が 1.11.0 からプリコンパイル済みで配布される (らしい) 。 このエントリを書いている時点での Nokogiri のプレリリースバージョンは 1.11.0.rc3 なので、大きな問題がなければ近日リリースの Nokogiri からという少し先取りの話になる。 おや?と…

Parser gem のバージョニングと RuboCop の TargetRubyVersion

Ruby 2.7.2 にあわせた Parser 2.7.2.0 がリリースされた。 Parser と RuboCop の繋がりは大きいので、この機会に RuboCop で解析する Ruby のバージョン指定との関係も書いておく。 Parser のバージョニング Parser のバージョニングは、最新の安定版 Ruby …

Kaigi on Rails STAY HOME Edition に登壇した

Kaigi on Rails STAY HOME Edition に『TDD with git. Long live engineering』というタイトルで登壇した。 kaigionrails.org 発表スライドは以下です。 Zoom での発表だったけれど、ふだん使いは Google Meets や Slack Call がメインだったりするので、メ…

Kaigi on Rails STAY HOME Edition に登壇します

今週末 2020年10月3日(土) に開催される Kaigi on Rails STAY HOME Edition に『TDD with git. Long live engineering.』というタイトルで登壇します。 kaigionrails.org 私の登壇は 16:20-16:40 です。 概ね話はできていて、今回はアジャイルソフトウェア開…

RubyKaigi Takeout 2020 に登壇した

RubyKaigi Takeout 2020 に登壇した。 本編登壇は RubyKaigi 2018 以来 2 回目。去年 RubyKaigi 2019 では LT 登壇で TracePoint を使うことによって仕込んでしまったバグの話をしていた。 今回のスライドは以下です。 RuboCop 1.0 に向けた話 本編から Rubo…