Skip to content
CAI
Software that uses CAICheck a score

jmettraux/rufus-scheduler

66.8

Adequate · 19 September 2026

1.4k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Ruby-based job scheduling library that manages periodic and one-time tasks using cron expressions and time intervals. It provides core capabilities for creating, pausing, resuming, and terminating scheduled jobs, along with utilities for parsing time strings and handling timezones. The library ensures reliability through concurrency controls and error handling mechanisms, supported by a comprehensive test suite for verifying job lifecycles and scheduling logic.

Features

Added misc scripts for benchmarking, profiling, and timezone management

This change introduces several new utility scripts in the misc directory to aid in development and debugging. It adds benchmarking tools (cronline\_next\_time\_cost.rb, freq.rb) to measure the performance of CronLine\#next\_time and frequency calculations, and profiling scripts (kssminus\_38k\_jobs.rb, kssminus\_38k\_jobs\_rprof.rb) to analyze scheduler behavior under heavy job loads. It also includes a diagnostic script (six\_field\_cronline\_test.rb) to demonstrate timing discrepancies with six-field cron expressions, a test script (gacha\_test.rb) to investigate thread limits and stability issues, and timezone utilities (tz\_all.rb, tz\_all.txt) to list and manage timezone data.

misc · high confidence

Repository initialization with modern documentation and CI configuration

The repository has been initialized with a comprehensive set of configuration and documentation files. A new .gitignore file excludes editor swap files, build artifacts, and lockfiles. The .rspec file configures RSpec to use color and documentation formatting. A .travis.yml file establishes a CI pipeline testing against Ruby versions 1.9.3 through 2.7.1 and JRuby 9.2.14.0. Documentation has been migrated from legacy .txt files to Markdown (README.md, CHANGELOG.md, CREDITS.md), with the CHANGELOG recording versions up to 3.9.2. A Makefile replaces the previous Rakefile to handle gem building and pushing. The LICENSE.txt copyright year has been updated to 2023.

(repo-wide) · high confidence

Behavioural changes

Migration from EventMachine to standard Rufus::Scheduler

The library has removed the EventMachine-specific adapter (rufus-scheduler-em) and now requires the standard rufus-scheduler gem. Users relying on the previous EventMachine integration must update their code to use the standard scheduler interface.

lib · high confidence

Rufus::Scheduler internals refactored and legacy EventMachine support removed

The scheduler's internal structure has been reorganized: job management is now handled by a dedicated Rufus::Scheduler::JobArray class, and job logic is split into separate files (jobs\_core.rb, jobs\_one\_time.rb, jobs\_repeat.rb). Time parsing now relies on the Fugit library for cron and duration strings, replacing the previous custom parsing logic. Additionally, the legacy EventMachine-based scheduler (Rufus::Scem) and its associated files have been removed, along with the old CronLine implementation.

lib/rufus/scheduler · high confidence

Rufus::Scheduler upgraded to version 3.9.2 with dependency and API changes

The scheduler library has been updated to version 3.9.2. This release replaces the internal time handling with the \EtOrbi::EoTime\ library and relies on \fugit\ for cron parsing, removing the legacy \rufus/otime.rb\ and \rufus/scheduler-em.rb\ files. Users will notice that the \Scheduler.start\_new\ class method is no longer available and must be replaced with \Scheduler.new\. Additionally, the scheduler now exposes \down?\ and \up?\ methods to check its status, and the \resume\ method now accepts a \discard\_past\ option to control how paused jobs are handled upon resumption.

lib/rufus · high confidence

Switched documentation generation from RDoc to YARD

The project has migrated its documentation tooling from RDoc to YARD. This change removes the legacy RDoc-specific stylesheet (rdoc-style.css) and implies that the generated API documentation will now follow YARD's default styling and structure, potentially altering the visual appearance and layout of the public documentation site.

doc · high confidence

Test coverage

Comprehensive test suite for rufus-scheduler; Removed legacy stress and basic test scripts.

Dependencies

Migrate to Bundler and update dependency specifications

The project now uses a Gemfile to manage dependencies via Bundler, replacing the previous setup. The main gemspec has been updated to require Ruby 1.9 or higher, peg the 'fugit' runtime dependency to version 1.1.11.1 or higher (within the \~\> 1.1 range), and specify RSpec 3.7 and Chronic 0.10 as development dependencies. Additionally, the separate 'rufus-scheduler-em' gemspec has been removed, consolidating the project structure.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 67.

Lenses

  • Code Health 98
  • Architecture 69
  • Maturity 57
  • Readiness 72
  • Security 92

Changes since last survey

  • 300 commits — 293 feature/other, 7 fixes

By area

  • (root) — 143 commits
  • lib/rufus — 67 commits
  • (repo) — 31 commits
  • spec/scheduler_spec.rb — 13 commits
  • .github/workflows — 9 commits
  • spec/parse_spec.rb — 9 commits
  • spec/spec_helper.rb — 8 commits
  • spec/job_spec.rb — 7 commits
  • spec/job_cron_spec.rb — 4 commits
  • spec/job_repeat_spec.rb — 3 commits
  • spec/job_every_spec.rb — 2 commits
  • .github/dependabot.yml — 1 commit
  • spec/cronline_spec.rb — 1 commit
  • spec/schedule_at_spec.rb — 1 commit
  • spec/zotime_spec.rb — 1 commit

Notable commits

  • fix: Fix #shutdown from scheduler job, gh-304
  • fix: Fix a broken link in the README
  • fix: Fix advanced locking interface
  • fix: Fix documentation error, gh-249
  • fix: Fix spec for older Rubies without String#match?
  • fix: Fix warning: assigned but unused variable - e
  • fix: fix a broken link in scheduler.rb
  • change: 2019
  • change: 2020
  • change: 2021
  • change: 2023
  • change: Accept locals at Job scheduling time
  • change: Accept max_worker_threads: for max_work_threads:
  • change: Adapt Makefile to BSD Make, [ci skip]
  • change: Adapt parse spec to UTC environments
  • change: Add "please" to list of "not swear words"
  • change: Add #locals access to Job
  • change: Add #source_location to Job, gh-322
  • change: Add .github/dependabot.yml
  • change: Add Daniel to credit file
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

jmettraux/rufus-scheduler was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e95f10c21bd425c9febef83d8605184eb433d2db — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.