Move database clean from cron to Sidekiq scheduler

After moving the remaining tasks from schedule.rb to sidekiq.yml, we can
remove whenever and won't rely on cron any more. That will simplify the
setup and migration to a new server.
This commit is contained in:
Maikel Linke
2026-03-31 11:20:23 +11:00
parent 5beed6f028
commit 80a12db191
4 changed files with 34 additions and 4 deletions

13
app/jobs/rake_job.rb Normal file
View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
# Executes a rake task
class RakeJob < ApplicationJob
def perform(task_string)
Rails.application.load_tasks if Rake::Task.tasks.empty?
Rake.application.invoke_task(task_string)
ensure
name, _args = Rake.application.parse_task_string(task_string)
Rake::Task[name].reenable
end
end

View File

@@ -11,10 +11,6 @@ env "MAILTO", ENV["SCHEDULE_NOTIFICATIONS"] if ENV["SCHEDULE_NOTIFICATIONS"]
# If we use -e with a file containing specs, rspec interprets it and filters out our examples
job_type :run_file, "cd :path; :environment_variable=:environment bundle exec script/rails runner :task :output"
every 1.month, at: '4:30am' do
rake 'ofn:data:remove_transient_data'
end
every 1.day, at: '2:45am' do
rake 'db2fog:clean' if ENV['S3_BACKUPS_BUCKET']
end

View File

@@ -19,3 +19,6 @@
every: "5m"
OrderCycleClosingJob:
every: "5m"
RakeJob:
args: ["ofn:data:remove_transient_data"]
cron: "30 4 1 * *"

View File

@@ -0,0 +1,18 @@
# frozen_string_literal: true
require "tasks/data/remove_transient_data"
RSpec.describe RakeJob do
let(:task_string) { "ofn:data:remove_transient_data" }
it "calls the removal service" do
expect(RemoveTransientData).to receive(:new).and_call_original
RakeJob.perform_now(task_string)
end
it "can be called several times" do
expect(RemoveTransientData).to receive(:new).twice.and_call_original
RakeJob.perform_now(task_string)
RakeJob.perform_now(task_string)
end
end