From 908af85f3d942ad292796acba3b44962a03aca4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 26 Sep 2026 17:20:00 +0000 Subject: [PATCH 1/4] Bump good_job from 4.19.2 to 4.19.3 Bumps [good_job](https://github.com/bensheldon/good_job) from 4.19.2 to 4.19.3. - [Release notes](https://github.com/bensheldon/good_job/releases) - [Changelog](https://github.com/bensheldon/good_job/blob/main/CHANGELOG.md) - [Commits](https://github.com/bensheldon/good_job/compare/v4.19.2...v4.19.3) --- updated-dependencies: - dependency-name: good_job dependency-version: 4.19.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 57afab98..2a5e71fd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,9 +95,9 @@ GEM irb (~> 1.10) reline (>= 0.3.8) drb (2.2.3) - erb (6.0.6) + erb (6.0.7) erubi (1.13.1) - et-orbi (1.4.0) + et-orbi (1.4.2) tzinfo factory_bot (6.5.5) activesupport (>= 6.1.0) @@ -107,12 +107,12 @@ GEM faker (3.8.0) i18n (>= 1.8.11, < 2) ffi (1.17.4) - fugit (1.13.0) + fugit (1.14.0) et-orbi (~> 1.4) raabro (~> 1.4) globalid (1.4.0) activesupport (>= 6.1) - good_job (4.19.2) + good_job (4.19.3) activejob (>= 6.1.0) activerecord (>= 6.1.0) concurrent-ruby (>= 1.3.1) @@ -125,7 +125,7 @@ GEM i18n (1.15.2) concurrent-ruby (~> 1.0) image_processing (2.1.0) - io-console (0.8.2) + io-console (0.9.4) irb (1.18.0) pp (>= 0.6.0) prism (>= 1.3.0) @@ -236,7 +236,7 @@ GEM rbs (>= 4.0.0) tsort regexp_parser (2.13.0) - reline (0.6.3) + reline (0.7.0) io-console (~> 0.5) rexml (3.4.4) rubocop (1.91.0) @@ -296,7 +296,7 @@ GEM websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) will_paginate (4.0.1) - zeitwerk (2.8.2) + zeitwerk (2.8.3) PLATFORMS ruby @@ -359,20 +359,20 @@ CHECKSUMS date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6 drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 - erb (6.0.6) sha256=a9b24986700f5bf127c4f297c5403c3ca41b83b0a316c0cd09a096b56e644ae5 + erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92 erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9 - et-orbi (1.4.0) sha256=6c7e3c90779821f9e3b324c5e96fda9767f72995d6ae435b96678a4f3e2de8bc + et-orbi (1.4.2) sha256=bb555dae668419cb24caa2a293a170e58be6d4df1e017c51f5030bdc133cd20c factory_bot (6.5.5) sha256=ce59295daee1b4704dab8a2fee6816f513d467c6aa3bc587860767d74a66efbe factory_bot_rails (6.5.1) sha256=d3cc4851eae4dea8a665ec4a4516895045e710554d2b5ac9e68b94d351bc6d68 faker (3.8.0) sha256=c147b308df73a90f27a4fc84f18d4c22ef0ad9c2a64b2b61c86fd0ca71753efc ffi (1.17.4) sha256=bcd1642e06f0d16fc9e09ac6d49c3a7298b9789bcb58127302f934e437d60acf - fugit (1.13.0) sha256=a4f093fce740da52f216740a5041e2a594ea763cdb89e8b2754ca4399634ab18 + fugit (1.14.0) sha256=e311a9cc85a54bb67649df45060e721282a1e2c8ebad40e41874a3a7d576f37e globalid (1.4.0) sha256=037f12fbf1d9d7a014d501c2d5c77356fd4ddd96d7a7991d6700bba96706f427 - good_job (4.19.2) sha256=73f4ea0595a29d28b9d9c0bf23361cc7434542b4d286f59b803819110c26e4b0 + good_job (4.19.3) sha256=b9fb26f45dc480cd22e31d132d658c189676d26f641a0ce125a44e22dba5fa98 has_scope (0.9.0) sha256=783a93006cf898525bb4899696f1d088c0f6ff897d6df2bf03fdbbe0d0b5124c i18n (1.15.2) sha256=00f9eb62412fe593b2a65a97daa75300d37abb8f7202ec748e94b6d46a9dd1b5 image_processing (2.1.0) sha256=ca3814b1b909fc5fab68b261c50eaffef11e29a6907143e9cf1efc14b6dc6f47 - io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc + io-console (0.9.4) sha256=a403304f32928ee85e56d457b4612ca43f2703b561a3258844992bd24085fbb1 irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0 @@ -417,7 +417,7 @@ CHECKSUMS rbs (4.2.0) sha256=51f7b886dcc05bc09e10b901daa6a81829f6adc03101d6ca9ea4aac6103e0674 rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469 regexp_parser (2.13.0) sha256=d105d95d2138954e73914d2fbfb3d0a8f8605a49a3e89864c32e78b9107cb770 - reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 + reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 rubocop (1.91.0) sha256=9c82b7bf391c5d7e3798c5b9996e22a1fe3bd7468e351dfdeb96140c058296d0 rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db @@ -443,7 +443,7 @@ CHECKSUMS websocket-driver (0.8.2) sha256=97c556b019bf3410b4961002ac501621e9322d3f8a7bc02161a09301cc4c4146 websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241 will_paginate (4.0.1) sha256=107b226ebe1d393d274575956a7c472e1eefdd97d8828e01b72d425d15a875b9 - zeitwerk (2.8.2) sha256=7212a61311083c604184b1ea2574b9aa05cd14f855a0841c06985cabe9181d12 + zeitwerk (2.8.3) sha256=2c85125a8467ce069e20123d1e709a08955c9d29c118c25b46b7b7fafdbb92e5 RUBY VERSION ruby 4.0.1 From 788aa948488fbbb18cb20f4768c667653da8980e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 26 Sep 2026 17:20:27 +0000 Subject: [PATCH 2/4] Update gemset.nix --- gemset.nix | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/gemset.nix b/gemset.nix index 6d33e04f..1987e1e3 100644 --- a/gemset.nix +++ b/gemset.nix @@ -332,12 +332,12 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1raacipbb5m0176w05m3n21ip91w7i0cb5zjqhkz2nqgf234kcm9"; + sha256 = "14pfj6zn0p1hxj6s6s0r7d424wap8zl9zxf89nj79y8fbg16vjn5"; target = "ruby"; type = "gem"; }; targets = []; - version = "6.0.6"; + version = "6.0.7"; }; erubi = { groups = ["default" "development" "test"]; @@ -357,12 +357,12 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1g785lz4z2k7jrdl7bnnjllzfrwpv9pyki94ngizj8cqfy83qzkc"; + sha256 = "036j7h9xq2q3ym8pq08yvzafd2z5f2hr78m2r8jcn6c4csp5smdv"; target = "ruby"; type = "gem"; }; targets = []; - version = "1.4.0"; + version = "1.4.2"; }; factory_bot = { dependencies = ["activesupport"]; @@ -421,12 +421,12 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "065b6jb3k92cfnrfi2fv7ivfm555w90m02kl2vr55nj0wzy97w54"; + sha256 = "0zpkfvasg8vl33j41bgbr3ia30hjf870cifz95vbcjx5hp6aj4g3"; target = "ruby"; type = "gem"; }; targets = []; - version = "1.13.0"; + version = "1.14.0"; }; globalid = { dependencies = ["activesupport"]; @@ -447,12 +447,12 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1c744q61269qh2dzb1njni14ahy73hv27gy0v6wji7d2jl2ymx3k"; + sha256 = "167slpdj4km44phhq6k4dz97d5hqiijjs4qxwcicv064bps2dyxr"; target = "ruby"; type = "gem"; }; targets = []; - version = "4.19.2"; + version = "4.19.3"; }; has_scope = { dependencies = ["actionpack" "activesupport"]; @@ -497,12 +497,12 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1k0lk3pwadm2myvpg893n8jshmrf2sigrd4ki15lymy7gixaxqyn"; + sha256 = "1cgvhm0d4awr8j42b8v1nl1jfgx45ihv8mylargfi3lj697k00x4"; target = "ruby"; type = "gem"; }; targets = []; - version = "0.8.2"; + version = "0.9.4"; }; irb = { dependencies = ["pp" "prism" "rdoc" "reline"]; @@ -1063,12 +1063,12 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0d8q5c4nh2g9pp758kizh8sfrvngynrjlm0i1zn3cnsnfd4v160i"; + sha256 = "0gaq2lc463ap1srz7y5kh2p4dxazs7vjrpiby58d9yfvan72s0av"; target = "ruby"; type = "gem"; }; targets = []; - version = "0.6.3"; + version = "0.7.0"; }; rexml = { groups = ["default" "test"]; @@ -1386,11 +1386,11 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "04hx33lsnp4q0qf8982mz0acs1dap5s2bsmihi0n0g08249sc4kj"; + sha256 = "1rcjpgyzmdxp8rdw466156fmr588k9q1wg8j42g0dkk7hid1519c"; target = "ruby"; type = "gem"; }; targets = []; - version = "2.8.2"; + version = "2.8.3"; }; } \ No newline at end of file From 9372bfeacd6f1e32255798d6630a1a2c0c398af4 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Sat, 26 Sep 2026 19:23:39 +0200 Subject: [PATCH 3/4] Add new good_job migration and run it --- ...72321_add_index_good_jobs_discarded_job_class.rb | 13 +++++++++++++ db/schema.rb | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20260926172321_add_index_good_jobs_discarded_job_class.rb diff --git a/db/migrate/20260926172321_add_index_good_jobs_discarded_job_class.rb b/db/migrate/20260926172321_add_index_good_jobs_discarded_job_class.rb new file mode 100644 index 00000000..62de5b23 --- /dev/null +++ b/db/migrate/20260926172321_add_index_good_jobs_discarded_job_class.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddIndexGoodJobsDiscardedJobClass < ActiveRecord::Migration[8.1] + disable_ddl_transaction! + + def change + add_index :good_jobs, %i[job_class finished_at], + name: :index_good_jobs_on_discarded_job_class, + where: 'finished_at IS NOT NULL AND error IS NOT NULL', + algorithm: :concurrently, + if_not_exists: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 717a06ba..e670e7ba 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.1].define(version: 2026_04_25_113634) do +ActiveRecord::Schema[8.1].define(version: 2026_09_26_172321) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -248,6 +248,7 @@ t.index ["finished_at"], name: "index_good_jobs_jobs_on_finished_at_only", where: "(finished_at IS NOT NULL)" t.index ["finished_at"], name: "index_good_jobs_on_discarded", order: :desc, where: "((finished_at IS NOT NULL) AND (error IS NOT NULL))" t.index ["id"], name: "index_good_jobs_on_unfinished_or_errored", where: "((finished_at IS NULL) OR (error IS NOT NULL))" + t.index ["job_class", "finished_at"], name: "index_good_jobs_on_discarded_job_class", where: "((finished_at IS NOT NULL) AND (error IS NOT NULL))" t.index ["job_class"], name: "index_good_jobs_on_job_class" t.index ["labels"], name: "index_good_jobs_on_labels", where: "(labels IS NOT NULL)", using: :gin t.index ["locked_by_id"], name: "index_good_jobs_on_locked_by_id", where: "(locked_by_id IS NOT NULL)" From d34ec6eb1c7fadd2c00b092158da74d9f2459e00 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Sat, 26 Sep 2026 19:24:49 +0200 Subject: [PATCH 4/4] Add test to validate good_job configuration --- test/lib/good_job_test.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/lib/good_job_test.rb b/test/lib/good_job_test.rb index aee124f0..2804ba3a 100644 --- a/test/lib/good_job_test.rb +++ b/test/lib/good_job_test.rb @@ -10,4 +10,8 @@ class GoodJobTest < ActiveSupport::TestCase 'GoodJob has pending migrations.' \ 'Run `rails g good_job:update` and `rails db:migrate` to ensure all migrations are applied' end + + test 'configuration should be valid' do + assert_predicate GoodJob.configuration, :valid?, 'GoodJob configuration is invalid.' + end end