jmettraux/rufus-scheduler
66.8
Adequate · 19 September 2026
1.4k
lines of production code
Ruby
primary language
1
measurement over time
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.