Add Bullet gem for dev & fix N+1 queries issues for core index actions
All checks were successful
CI / scan_ruby (push) Successful in 26s
CI / scan_js (push) Successful in 15s
CI / lint (push) Successful in 15s
CI / test (push) Successful in 34s

This commit is contained in:
sto
2026-03-10 15:51:26 +01:00
parent ee65212f57
commit 8a993fa310
7 changed files with 17 additions and 4 deletions

View File

@@ -69,6 +69,7 @@ group :development do
gem "web-console" gem "web-console"
gem "annotaterb" gem "annotaterb"
gem "bullet"
end end
group :test do group :test do

View File

@@ -91,6 +91,9 @@ GEM
brakeman (8.0.4) brakeman (8.0.4)
racc racc
builder (3.3.0) builder (3.3.0)
bullet (8.1.0)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
capybara (3.40.0) capybara (3.40.0)
addressable addressable
matrix matrix
@@ -424,6 +427,7 @@ GEM
unicode-display_width (3.2.0) unicode-display_width (3.2.0)
unicode-emoji (~> 4.1) unicode-emoji (~> 4.1)
unicode-emoji (4.2.0) unicode-emoji (4.2.0)
uniform_notifier (1.18.0)
uri (1.1.1) uri (1.1.1)
useragent (0.16.11) useragent (0.16.11)
web-console (4.3.0) web-console (4.3.0)
@@ -455,6 +459,7 @@ DEPENDENCIES
bootsnap bootsnap
bootstrap (~> 5.3.3) bootstrap (~> 5.3.3)
brakeman brakeman
bullet
capybara capybara
csv csv
damerau-levenshtein damerau-levenshtein

View File

@@ -12,7 +12,7 @@ class ContestantsController < ApplicationController
def index def index
authorize @contest authorize @contest
@contestants = @contest.contestants.sort_by { |contestant| contestant.name } @contestants = @contest.contestants.includes([ :completions, :offline ]).sort_by { |contestant| contestant.name }
filter_contestants_per_category filter_contestants_per_category
end end

View File

@@ -10,7 +10,7 @@ class ContestsController < ApplicationController
def index def index
authorize :contest authorize :contest
@contests = current_user.contests @contests = current_user.contests.includes([ :contestants, puzzles: [ :image_attachment ] ])
@title = I18n.t("contests.index.title", username: current_user.username) @title = I18n.t("contests.index.title", username: current_user.username)
end end

View File

@@ -6,7 +6,7 @@ class PuzzlesController < ApplicationController
authorize @contest authorize @contest
@title = @contest.name @title = @contest.name
@puzzles = @contest.puzzles.order(:id) @puzzles = @contest.puzzles.includes([ :image_attachment ]).order(:id)
end end
def edit def edit

View File

@@ -7,7 +7,7 @@ class UsersController < ApplicationController
authorize :user authorize :user
@title = t("users.index.title") @title = t("users.index.title")
@users = User.all @users = User.all.includes(contests: [ :contestants, :puzzles ])
end end
def edit def edit

View File

@@ -71,4 +71,11 @@ Rails.application.configure do
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`. # Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
# config.generators.apply_rubocop_autocorrect_after_generate! # config.generators.apply_rubocop_autocorrect_after_generate!
config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.console = true
Bullet.rails_logger = true
end
end end