gem

Installation & CLI

One gem, three commands.

Requirements

§ Ruby version floor; pg_dump on the machine that runs backups; storage SDKs are opt-in (aws-sdk-s3 for the :s3 store).

Install

$ bundle add boring-backup aws-sdk-s3

bb install

§ The interactive setup: detects Rails + Solid Queue, asks for bucket and region, writes the initializer, adds the recurring job under production: only, offers a bin/bb binstub. Credentials stay out of the committed initializer — they come from the environment or an IAM role.

$ bundle exec bb install

bb doctor

§ Run it where the credentials live: checks config, database connectivity, store reachability, and tells you what it skipped. The thing to run before trusting the 3am job.

$ bundle exec bb doctor
Boring Backup  doctor · production
 pg_dump   /usr/lib/postgresql/17/bin/pg_dump
 versions  pg_dump 17, server 17
 database  acme_production
 stores    1 registered
 s3        s3://acme-backups eu-central-1
 schedule  config/recurring.yml

Everything checks out.

bb backup

§ Streams pg_dump to every configured store without touching disk; exits non-zero on failure so cron and CI notice.

Running on a schedule

§ Solid Queue recurring.yml (what bb install writes), a custom job invoking BoringBackup::Commands::Backup.execute for Sidekiq/GoodJob, or plain cron.

# config/recurring.yml
production:
  boring_backup:
    class: BoringBackup::BackupJob
    schedule: every day at 3am