about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Schonning <nschonni@gmail.com>2023-02-19 20:28:40 -0500
committerGitHub <noreply@github.com>2023-02-20 02:28:40 +0100
commit21bf32635687770bc0026d769a69f49b89f8a0a2 (patch)
tree9fde82eedc10fe01b9450a2591fc2f530f29c1d6
parent597767a9f7ca846be9fbca826aba362f8387a60f (diff)
Autofix Rubocop Rails/Pluck (#23730)
-rw-r--r--.rubocop_todo.yml11
-rw-r--r--app/lib/importer/base_importer.rb2
-rw-r--r--app/lib/link_details_extractor.rb8
-rw-r--r--app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb2
-rw-r--r--spec/controllers/api/v1/notifications_controller_spec.rb12
-rw-r--r--spec/controllers/api/v1/suggestions_controller_spec.rb2
-rw-r--r--spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb2
7 files changed, 14 insertions, 25 deletions
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 1a524e6fd..954e42f9e 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -2435,17 +2435,6 @@ Rails/Output:
   Exclude:
     - 'lib/mastodon/ip_blocks_cli.rb'
 
-# Offense count: 14
-# This cop supports safe autocorrection (--autocorrect).
-Rails/Pluck:
-  Exclude:
-    - 'app/lib/importer/base_importer.rb'
-    - 'app/lib/link_details_extractor.rb'
-    - 'app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb'
-    - 'spec/controllers/api/v1/notifications_controller_spec.rb'
-    - 'spec/controllers/api/v1/suggestions_controller_spec.rb'
-    - 'spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb'
-
 # Offense count: 9
 # This cop supports unsafe autocorrection (--autocorrect-all).
 # Configuration parameters: Include.
diff --git a/app/lib/importer/base_importer.rb b/app/lib/importer/base_importer.rb
index ea522c600..0cd1d3422 100644
--- a/app/lib/importer/base_importer.rb
+++ b/app/lib/importer/base_importer.rb
@@ -45,7 +45,7 @@ class Importer::BaseImporter
   # Remove documents from the index that no longer exist in the database
   def clean_up!
     index.scroll_batches do |documents|
-      ids           = documents.map { |doc| doc['_id'] }
+      ids           = documents.pluck('_id')
       existence_map = index.adapter.target.where(id: ids).pluck(:id).each_with_object({}) { |id, map| map[id.to_s] = true }
       tmp           = ids.reject { |id| existence_map[id] }
 
diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb
index 74a7d0f3b..f8a0be636 100644
--- a/app/lib/link_details_extractor.rb
+++ b/app/lib/link_details_extractor.rb
@@ -188,7 +188,7 @@ class LinkDetailsExtractor
   end
 
   def language
-    valid_locale_or_nil(structured_data&.language || opengraph_tag('og:locale') || document.xpath('//html').map { |element| element['lang'] }.first)
+    valid_locale_or_nil(structured_data&.language || opengraph_tag('og:locale') || document.xpath('//html').pick('lang'))
   end
 
   def icon
@@ -220,15 +220,15 @@ class LinkDetailsExtractor
   end
 
   def link_tag(name)
-    document.xpath("//link[@rel=\"#{name}\"]").map { |link| link['href'] }.first
+    document.xpath("//link[@rel=\"#{name}\"]").pick('href')
   end
 
   def opengraph_tag(name)
-    document.xpath("//meta[@property=\"#{name}\" or @name=\"#{name}\"]").map { |meta| meta['content'] }.first
+    document.xpath("//meta[@property=\"#{name}\" or @name=\"#{name}\"]").pick('content')
   end
 
   def meta_tag(name)
-    document.xpath("//meta[@name=\"#{name}\"]").map { |meta| meta['content'] }.first
+    document.xpath("//meta[@name=\"#{name}\"]").pick('content')
   end
 
   def structured_data
diff --git a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb
index bd92fe32c..cc5b6e137 100644
--- a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb
+++ b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb
@@ -67,7 +67,7 @@ class Scheduler::AccountsStatusesCleanupScheduler
   end
 
   def compute_budget
-    threads = Sidekiq::ProcessSet.new.select { |x| x['queues'].include?('push') }.map { |x| x['concurrency'] }.sum
+    threads = Sidekiq::ProcessSet.new.select { |x| x['queues'].include?('push') }.pluck('concurrency').sum
     [PER_THREAD_BUDGET * threads, MAX_BUDGET].min
   end
 
diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb
index 46e177c0e..22ebfa3dd 100644
--- a/spec/controllers/api/v1/notifications_controller_spec.rb
+++ b/spec/controllers/api/v1/notifications_controller_spec.rb
@@ -70,19 +70,19 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
       end
 
       it 'includes reblog' do
-        expect(body_as_json.map { |x| x[:type] }).to include 'reblog'
+        expect(body_as_json.pluck(:type)).to include 'reblog'
       end
 
       it 'includes mention' do
-        expect(body_as_json.map { |x| x[:type] }).to include 'mention'
+        expect(body_as_json.pluck(:type)).to include 'mention'
       end
 
       it 'includes favourite' do
-        expect(body_as_json.map { |x| x[:type] }).to include 'favourite'
+        expect(body_as_json.pluck(:type)).to include 'favourite'
       end
 
       it 'includes follow' do
-        expect(body_as_json.map { |x| x[:type] }).to include 'follow'
+        expect(body_as_json.pluck(:type)).to include 'follow'
       end
     end
 
@@ -125,7 +125,7 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
 
       it 'returns everything but excluded type' do
         expect(body_as_json.size).to_not eq 0
-        expect(body_as_json.map { |x| x[:type] }.uniq).to_not include 'mention'
+        expect(body_as_json.pluck(:type).uniq).to_not include 'mention'
       end
     end
 
@@ -139,7 +139,7 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
       end
 
       it 'returns only requested type' do
-        expect(body_as_json.map { |x| x[:type] }.uniq).to eq ['mention']
+        expect(body_as_json.pluck(:type).uniq).to eq ['mention']
       end
     end
   end
diff --git a/spec/controllers/api/v1/suggestions_controller_spec.rb b/spec/controllers/api/v1/suggestions_controller_spec.rb
index 7805b6b4f..35ba155e7 100644
--- a/spec/controllers/api/v1/suggestions_controller_spec.rb
+++ b/spec/controllers/api/v1/suggestions_controller_spec.rb
@@ -29,7 +29,7 @@ RSpec.describe Api::V1::SuggestionsController, type: :controller do
       json = body_as_json
 
       expect(json.size).to be >= 1
-      expect(json.map { |i| i[:id] }).to include(*[bob, jeff].map { |i| i.id.to_s })
+      expect(json.pluck(:id)).to include(*[bob, jeff].map { |i| i.id.to_s })
     end
   end
 end
diff --git a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
index c3156c4e9..f060c3a4b 100644
--- a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
@@ -140,7 +140,7 @@ describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do
           it 'includes existing credentials in list of excluded credentials' do
             get :options
 
-            excluded_credentials_ids = JSON.parse(response.body)['excludeCredentials'].map { |credential| credential['id'] }
+            excluded_credentials_ids = JSON.parse(response.body)['excludeCredentials'].pluck('id')
             expect(excluded_credentials_ids).to match_array(user.webauthn_credentials.pluck(:external_id))
           end
         end