週刊Railsウォッチ(20190806-2/2後編)RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか

こんにちは、hachi8833です。来週の週刊Railsウォッチはお盆休みのためお休みをいただきます🙇。先祖の供養を忘れずに。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください 今回は「公開つっつき会」第13回を元にしています。ご参加いただいた皆さま、ありがとうございます! ⚓Ruby ⚓awesome-ruby.com: 巨大なおすすめgemリストサイト(Ruby Weeklyより) サイト: Awesome Ruby 同サイトより 巨大すぎてつっつき中にチェックしきれないのは確実です。Awesome Rubyという別のサイト↓もあるのでややこしいですね。 つっつきボイス:「Awesomeなんちゃらって流行ってましたよね😆」「特にGitHub Trendingにやんなるほどありますね😆」 「とりあえずこういうのやるなら年度付けて欲しいし😆」「たしかに〜😆」「こういうのは、いつのAwesomeほげかですごく変わりますし😆」「年と、あと月も欲しいです」 後で気づきましたが、リポジトリは★10000越えてますね😳。issueには追加リクエストがずらりと並んでいます。 リポジトリ: markets/awesome-ruby: A collection of awesome Ruby libraries, tools, frameworks and software Issues · markets/awesome-ruby 同リポジトリより ⚓RuboCop1.4.1のPerformance/RegexpMatch改修 あざます!リリース通知来てたのでそっこー手元の手動regexp書き換えブランチに取り込みました! pic.twitter.com/fZB5rPIqph — Ryuta Kamizono (@kamipo) July 30, 2019 リリース: Releases · rubocop-hq/rubocop-performance PR: Fix a false negative for `Performance/RegexpMatch` by koic · Pull Request #73 · rubocop-hq/rubocop-performance #5589のフォロー。 このPRは、ガード条件のif分岐でMatchDataが検出されない場合にPerformance/RegexpMatchが以下のようにfalse negative(偽陰性)になる問題を修正する。 この問題はこのコードで検出された。@kamipoさんからのフィードバックに感謝。 % cat example.rb # frozen_string_literal: true raise unless ex.message =~ /can’t modify frozen IOError/ % bundle exec rubocop –only Performance/RegexpMatch Inspecting 1 file . 1 file inspected, no offenses detected 他に#5569のコメントもフォローした。 このPRは、ガード条件の後にMatchDataが存在する場合にPerformance/RegexpMatchがfalse negative(偽陽性)になる問題を防止する。以下はfalse negativeの例。 def foo return if /re/ =~ str # `Regexp.last_match[1]` cannot be referenced if changed from `=~` to `match?`. do_something(Regexp.last_match[1]) end #73より大意 つっつきボイス:「@kamipoさんが喜んでるツイートを見かけたので拾いました」「performance copのfalse negativeとfalse positiveを修正したのね😋」「こういうのが前は通ってたのか〜」「どこにあるのかなと思って最初うっかりRuboCop本家を探しちゃったんですけど、rubocop-performanceにありました😅」「今のRuboCopは分かれてますね☺️」「rubocop-performanceを-aでざざっとオートコレクトするのは便利だったりしますよね」「怒られた箇所を全部修正するのは大変ですけど😅」 現在の主なRuboCopリポジトリを拾ってみました。 rubocop-hq/rubocop: A Ruby static code analyzer and formatter, based on the community Ruby style guide. rubocop-hq/rubocop-rails: A RuboCop extension focused on enforcing Rails best practices and coding conventions. rubocop-hq/rubocop-performance: An extension of RuboCop focused on code performance checks. rubocop-hq/rubocop-rspec: Code style checking for RSpec files rubocop-hq/rubocop-minitest — ついさっき作られたようです! ⚓ブロック内の定数がトップレベルから参照できる問題(Ruby Weeklyより) … Continue reading 週刊Railsウォッチ(20190806-2/2後編)RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか