
Security News
CISA’s 2025 SBOM Guidance Adds Hashes, Licenses, Tool Metadata, and Context
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
delayed_job_recurring
Advanced tools
Extends delayed_job to support recurring jobs.
Add it to your Gemfile:
gem 'delayed_job_recurring'
Then define a task class. We like the concept of
interactors,
so we put our task classes in app/interactors
. You could also put them in lib
or even app/models
.
class MyTask
include Delayed::RecurringJob
run_every 1.day
run_at '11:00am'
timezone 'US/Pacific'
queue 'slow-jobs'
def perform
# Do some work here!
end
end
Finally, schedule it:
MyTask.schedule! # run every day at 11am Pacific time (accounting for daylight savings)
The best practice is to add your MyTask.schedule!
lines to a rake file, e.g.
# lib/tasks/recurring_jobs.rake
namespace :recurring do
task init: :environment do
MyTask.schedule!
MyOtherTask.schedule!
if Rails.env.production?
MyProductionOnlyTask.schedule!
end
end
end
and invoke this job by running rake recurring:init
on each deployment.
Alternatively, if your app only has one instance running, you can put your
schedule!
calls into an initializer, and then your jobs will be automatically
scheduled when your app starts. However, if you have more than one instance of
your app running in production, this will lead to a race condition and you will
end up with duplicate recurring jobs in the queue.
Note: your task class should not inherit from ActiveJob::Base.
MyTask.schedule(run_at: '12:00')
MyTask.schedule(run_every: 1.day, run_at: ['11:00', '6:00pm'])
MyTask.schedule(run_every: 1.week, run_at: ['sunday 8:00am', 'wednesday 8:00am'])
By default, before scheduling a new job, the old jobs scheduled with the same class will be unscheduled.
To schedule multiple jobs with same class, pass an unique matching param job_matching_param
and value for that matching param in each job as below:
MyTask.schedule(run_at: '12:00', job_matching_param: 'schedule_id', schedule_id: 2)
This allows you to schedule multiple jobs with same class if value of the unique matching param(which is schedule_id
in above example) is different in each job.
Many thanks to @ginjo and @kares for their work! This code was derived from https://gist.github.com/ginjo/3688965.
FAQs
Unknown package
We found that delayed_job_recurring demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.
Security News
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.