CronTool
Cron expression editor & debugger

rufus-scheduler — Ruby cron & interval scheduling

rufus-scheduler is the most popular pure-Ruby scheduler. It accepts cron syntax (via Fugit), interval shorthand (every '5m'), one-shot scheduling (at, in), and IANA timezones. It runs in-process, so the schedule lives as long as the Ruby process.
For durable scheduling across restarts and a worker fleet, pair rufus-scheduler with sidekiq-cron or use a system cron tied to a dedicated worker.

Examples

  • 018***
    Every day at 18:00
  • 0*/5***
    Every 5 hours
  • 018**1-5
    Weekdays at 18:00
  • 001**
    Once a month

Cheatsheet

FieldRequiredValues RangeWildcardsminuteYes0-59, - * / hourYes0-59, - * / day of monthYes1-31, - * / L W monthYes1-12, - * /day of weekYes0-7, - * / L

Calendar

View future cron matches in a calendar

April 2026

Showing next 1000 cron schedules

Loading...

Basic rufus-scheduler usage

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

# Cron
scheduler.cron '0 9 * * 1-5', tz: 'America/New_York' do
  Reports.send_morning_digest
end

# Interval
scheduler.every '5m' do
  Heartbeat.ping
end

# One-shot
scheduler.in '30s' do
  Cleanup.run
end

scheduler.join

Cron syntax in rufus

  • Standard 5-field: 0 9 * * 1-5
  • 6-field with seconds at the front: 30 0 9 * * 1-5
  • Descriptors: '@hourly', '@daily', '@weekly', '@monthly', '@yearly'
  • Last day: 0 0 L * * (Fugit supports L)
  • Aliases: 0 9 * * MON-FRI

Timezones in rufus

# Daily 09:00 in New York, regardless of DST
scheduler.cron '0 9 * * *', tz: 'America/New_York' do
  daily_job
end

# Daily 09:00 UTC
scheduler.cron '0 9 * * *', tz: 'UTC' do
  daily_utc_job
end

# Without tz: uses the host system's timezone
scheduler.cron '0 9 * * *' do
  ambiguous_job
end

Always pass tz: in production. The host timezone may differ across deployments and changes silently with the OS configuration.

rufus-scheduler pitfalls

  • In-process only — the schedule dies with the Ruby process. For durability, use sidekiq-cron or a system cron.
  • Multi-process Rails — every Puma worker runs the scheduler unless you gate on Process.pid or use a leader-election lib. Otherwise the cron fires N times per tick.
  • Long-running blocks — by default jobs run in their own thread, so a slow job doesn't block others. But many slow jobs at once can exhaust the thread pool.
  • Overlap — pass overlap: false to skip a tick if the previous run is still going.

Frequently asked questions

What cron syntax does rufus-scheduler support?

rufus-scheduler accepts standard 5-field and 6-field (with seconds) cron syntax via its `Fugit` parser. It also supports `every '5m'`-style interval syntax, `at` syntax for one-shot jobs, and `in '10s'` for delayed jobs.

How do I set a timezone with rufus-scheduler?

Pass `tz: 'America/New_York'` to the schedule call: `scheduler.cron('0 9 * * *', tz: 'America/New_York') { ... }`. rufus-scheduler resolves IANA timezone names via TZInfo. Without it, jobs run in the system timezone.

Should I use rufus-scheduler or sidekiq-cron?

rufus-scheduler runs in-process — simple, no dependencies. sidekiq-cron uses the Sidekiq queue — durable across restarts, distributed across workers. Use rufus for single-process tasks; use sidekiq-cron when you need the schedule to survive restarts and run on a worker fleet.

Does rufus-scheduler support L, W, # modifiers?

Partially. rufus uses Fugit for parsing; Fugit supports `L` for last day of month, but not `W` or `#`. For full Quartz-style modifiers, switch to a Java-side scheduler or use a runtime check inside the rufus job.

Ready to schedule it?

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

Free forever tier ・ No credit card required

Your next schedule
GET/wp-cron.php?doing_wp_cron=1

Schedule

every 5 minutes

Next run

in 23s

Apihustle Logo

This tool is part of the Apihustle suite - a collection of tools to test, improve and get to know your API inside and out.

  • Clobbr logo

    Clobbr

    The app & CLI tool to test API endpoint speed.

    Visit
  • Crontap logo

    Crontap

    Schedule recurring API calls using cron syntax.

    Visit
  • CronTool logo

    CronTool

    Debug multiple cron expressions on a calendar.

    Visit

  • Page AI

    AI Website Generator that designs and writes clean code.

    Visit
  • Shipixen

    Generate customized boilerplates in minutes.

    Visit
  • Page UI

    Landing page UI components for React & Next.js

    Visit