From 93efe624e3e991d6cc5ab0732d7e88cfc77c768f Mon Sep 17 00:00:00 2001 From: Jury Razumau Date: Wed, 17 May 2023 14:00:30 +0200 Subject: [PATCH 1/5] add tests on ruby 3.1, 3.2, rails 7.0, drop support for ruby 2.6 and rails 5.1 --- .github/workflows/ci.yml | 30 ++++++++++++++++++++++-------- .ruby-version | 1 + Gemfile | 2 +- gemfiles/rails5.1.gemfile | 3 --- gemfiles/rails7.0.gemfile | 3 +++ resque-durable.gemspec | 4 ++-- 6 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 .ruby-version delete mode 100644 gemfiles/rails5.1.gemfile create mode 100644 gemfiles/rails7.0.gemfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c4d188c..e34bc85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,7 +3,7 @@ name: CI on: push jobs: - test: + tests: runs-on: ubuntu-latest services: @@ -18,22 +18,21 @@ jobs: ruby-version: - "2.7" - "3.0" + - "3.1" + - "3.2" gemfile: - - rails5.1 - - rails5.2 - rails6.0 - rails6.1 - exclude: - - ruby-version: "3.0" - gemfile: rails5.1 - - ruby-version: "3.0" + - rails7.0 + include: + - ruby-version: "2.7" gemfile: rails5.2 env: BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile steps: - - uses: zendesk/checkout@v2 + - uses: zendesk/checkout@v3 - uses: zendesk/setup-ruby@v1 with: @@ -41,3 +40,18 @@ jobs: bundler-cache: true - run: bundle exec rake test + + tests_successful: + name: Tests passing? + needs: tests + if: always() + runs-on: ubuntu-latest + steps: + - run: | + if ${{ needs.tests.result == 'success' }} + then + echo "All tests pass" + else + echo "Some tests failed" + false + fi diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..6a81b4c --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.7.8 diff --git a/Gemfile b/Gemfile index 1ee86b5..4edc4a4 100644 --- a/Gemfile +++ b/Gemfile @@ -1 +1 @@ -eval_gemfile('gemfiles/rails5.1.gemfile') +eval_gemfile('gemfiles/rails6.1.gemfile') diff --git a/gemfiles/rails5.1.gemfile b/gemfiles/rails5.1.gemfile deleted file mode 100644 index c7b5fea..0000000 --- a/gemfiles/rails5.1.gemfile +++ /dev/null @@ -1,3 +0,0 @@ -eval_gemfile('common.rb') - -gem 'activerecord', '~> 5.1.7' diff --git a/gemfiles/rails7.0.gemfile b/gemfiles/rails7.0.gemfile new file mode 100644 index 0000000..7b57e6a --- /dev/null +++ b/gemfiles/rails7.0.gemfile @@ -0,0 +1,3 @@ +eval_gemfile('common.rb') + +gem 'activerecord', '~> 7.0.0' diff --git a/resque-durable.gemspec b/resque-durable.gemspec index a2f0b1e..90a94da 100644 --- a/resque-durable.gemspec +++ b/resque-durable.gemspec @@ -7,9 +7,9 @@ Gem::Specification.new do |s| s.license = "MIT" s.files = `git ls-files lib`.split($/) - s.required_ruby_version = ">= 2.6" + s.required_ruby_version = ">= 2.7" - s.add_runtime_dependency("activerecord", ">= 5.1") + s.add_runtime_dependency("activerecord", ">= 5.2") s.add_runtime_dependency("resque", "~> 1.27") s.add_runtime_dependency("uuidtools", "~> 2.2") s.add_runtime_dependency("redis", "< 5") From 40b4d7b6a334d8cfdd452e7a1ff8e902f2681f09 Mon Sep 17 00:00:00 2001 From: Jury Razumau Date: Wed, 17 May 2023 14:00:57 +0200 Subject: [PATCH 2/5] move development dependencies into Gemfile --- gemfiles/common.rb | 9 +++++++++ resque-durable.gemspec | 9 --------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gemfiles/common.rb b/gemfiles/common.rb index 94ec425..d738248 100644 --- a/gemfiles/common.rb +++ b/gemfiles/common.rb @@ -1,3 +1,12 @@ source 'https://rubygems.org' gemspec path: '..' + +gem "bump" +gem "rake" +gem "minitest" +gem "minitest-rg" +gem "mocha" +gem "timecop" +gem "pry" +gem "sqlite3" diff --git a/resque-durable.gemspec b/resque-durable.gemspec index 90a94da..448beed 100644 --- a/resque-durable.gemspec +++ b/resque-durable.gemspec @@ -13,13 +13,4 @@ Gem::Specification.new do |s| s.add_runtime_dependency("resque", "~> 1.27") s.add_runtime_dependency("uuidtools", "~> 2.2") s.add_runtime_dependency("redis", "< 5") - - s.add_development_dependency("bump") - s.add_development_dependency("rake") - s.add_development_dependency("minitest") - s.add_development_dependency("minitest-rg") - s.add_development_dependency("mocha") - s.add_development_dependency("timecop") - s.add_development_dependency("pry") - s.add_development_dependency("sqlite3") end From 96c655755a730b327ccff62d0a9debff1274da6a Mon Sep 17 00:00:00 2001 From: Jury Razumau Date: Wed, 17 May 2023 15:14:43 +0200 Subject: [PATCH 3/5] set precision for timestamps to 6 in all active_record versions --- test/schema.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/schema.rb b/test/schema.rb index 9fc63c2..2fa8186 100644 --- a/test/schema.rb +++ b/test/schema.rb @@ -6,9 +6,9 @@ t.string :job_klass, :null => false t.string :payload, :null => false t.integer :enqueue_count, :default => 0 - t.datetime :enqueued_at - t.datetime :completed_at - t.datetime :timeout_at + t.datetime :enqueued_at, precision: 6 + t.datetime :completed_at, precision: 6 + t.datetime :timeout_at, precision: 6 t.timestamps :null => true end add_index(:durable_queue_audits, :enqueued_id, :unique => true) From 0846f680183c37335def1b1b851cca96640f978f Mon Sep 17 00:00:00 2001 From: Jury Razumau Date: Wed, 17 May 2023 15:40:53 +0200 Subject: [PATCH 4/5] bump version to 4.1.0 --- CHANGELOG.md | 5 +++++ resque-durable.gemspec | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e69a48..6fcd645 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Unreleased +# 4.1.0 +- Add support for Ruby 3.1 and 3.2 +- Add support for Rails 7.0 +- Drop support for Rails 5.1 + # 4.0.1 - Bug fix: Cast job audit to the configured auditor class when enqueuing diff --git a/resque-durable.gemspec b/resque-durable.gemspec index 448beed..0e5e1d3 100644 --- a/resque-durable.gemspec +++ b/resque-durable.gemspec @@ -1,6 +1,6 @@ Gem::Specification.new do |s| s.name = "resque-durable" - s.version = "4.0.3" + s.version = "4.1.0" s.authors = ["Eric Chapweske", "Ben Osheroff"] s.summary = "Resque queue backed by database audits, with automatic retry" s.homepage = "https://github.com/zendesk/resque-durable" From 4e41edbb01003a8b0802aecad873de1b02f832cf Mon Sep 17 00:00:00 2001 From: Jury Razumau Date: Wed, 17 May 2023 14:14:56 +0200 Subject: [PATCH 5/5] use Time#floor to match database precision Database timestamps now have precision 6, while `Time.now` still has precision. To be able to compare them, we truncate to microseconds using `Time#floor`. --- test/queue_audit_test.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/queue_audit_test.rb b/test/queue_audit_test.rb index efa212f..e6e40ee 100644 --- a/test/queue_audit_test.rb +++ b/test/queue_audit_test.rb @@ -57,7 +57,7 @@ class QueueAuditTest < Minitest::Test Timecop.freeze(Time.now) do @audit.complete! - assert_equal Time.now, @audit.completed_at + assert_equal Time.now.floor(6), @audit.completed_at assert_equal true, @audit.complete? end end @@ -129,7 +129,7 @@ class QueueAuditTest < Minitest::Test @audit.enqueued! end - assert_equal an_hour_ago, @audit.enqueued_at + assert_equal an_hour_ago.floor(6), @audit.enqueued_at end end @@ -141,7 +141,7 @@ class QueueAuditTest < Minitest::Test @audit.enqueued! end - assert_equal (an_hour_ago + 10.minutes), @audit.timeout_at + assert_equal (an_hour_ago + 10.minutes).floor(6), @audit.timeout_at end it 'allows configuration of the timeout' do @@ -184,13 +184,13 @@ class QueueAuditTest < Minitest::Test Timecop.freeze(ts) do @audit.enqueued! end - assert_equal ts + 10.minutes, @audit.timeout_at + assert_equal (ts + 10.minutes).floor(6), @audit.timeout_at ts = 30.minutes.ago Timecop.freeze(ts) do @audit.heartbeat! end - assert_equal ts + 10.minutes, @audit.timeout_at + assert_equal (ts + 10.minutes).floor(6), @audit.timeout_at end end