mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-04-02 06:51:40 +00:00
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:
13
app/jobs/rake_job.rb
Normal file
13
app/jobs/rake_job.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -19,3 +19,6 @@
|
||||
every: "5m"
|
||||
OrderCycleClosingJob:
|
||||
every: "5m"
|
||||
RakeJob:
|
||||
args: ["ofn:data:remove_transient_data"]
|
||||
cron: "30 4 1 * *"
|
||||
|
||||
18
spec/jobs/rake_job_spec.rb
Normal file
18
spec/jobs/rake_job_spec.rb
Normal 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
|
||||
Reference in New Issue
Block a user