chore: Use find_each instead of .all.each (#6975)

- Enable the rubocop Rails/FindEach
- Replace the .all.each with .find_each

This should let us avoid potential memory usage.
Motivation from the speedshop newsletter by Nate Berkopec

ref: https://www.rubyinrails.com/2017/11/16/use-find-each-instead-of-all-each-in-rails/
ref: https://linear.app/chatwoot/issue/CW-1480/chore-run-all-sidekiq-jobs-async
This commit is contained in:
Sojan Jose
2023-04-25 09:32:35 +05:30
committed by GitHub
parent b529baa5eb
commit cf91e9eb58
9 changed files with 12 additions and 11 deletions

View File

@@ -12,7 +12,7 @@ RSpec.describe 'Api::V1::Accounts::BulkActionsController', type: :request do
create(:conversation, account_id: account.id, status: :open, team_id: team_1.id)
create(:conversation, account_id: account.id, status: :open)
create(:conversation, account_id: account.id, status: :open)
Conversation.all.each do |conversation|
Conversation.all.find_each do |conversation|
create(:inbox_member, inbox: conversation.inbox, user: agent_1)
create(:inbox_member, inbox: conversation.inbox, user: agent_2)
end

View File

@@ -16,7 +16,7 @@ RSpec.describe BulkActionsJob, type: :job do
let!(:conversation_3) { create(:conversation, account_id: account.id, status: :open) }
before do
Conversation.all.each do |conversation|
Conversation.all.find_each do |conversation|
create(:inbox_member, inbox: conversation.inbox, user: agent)
end
end

View File

@@ -15,10 +15,6 @@ RSpec.describe Inboxes::FetchImapEmailInboxesJob, type: :job do
context 'when called' do
it 'fetch all the email channels' do
imap_email_inboxes = double
allow(imap_email_inboxes).to receive(:all).and_return([email_inbox])
allow(Inbox).to receive(:where).and_return(imap_email_inboxes)
expect(Inboxes::FetchImapEmailsJob).to receive(:perform_later).with(imap_email_channel).once
described_class.perform_now