Skip to content

Running a site

Utilities

The Control Plane's maintenance screens — cache, search, jobs, scheduled tasks, health, content, schema, backups and the audit log — what each shows, what its buttons do, and when to reach for it.

When something about the site is not right, a page looks stale, search misses a post, a task has stopped, the first place to look is Utilities, in the Control Plane’s sidebar. Everything here can be done without a terminal, and where the command line has an equivalent, each section names it.

Opening Utilities needs the utilities.view ability. Rebuilding search, exporting content and importing content each need an ability of their own, and the screens hide a button you may not use.

Screen Use it when
Cache a public page still shows what you changed
Search search results are missing or out of date
Jobs something that should happen in the background hasn’t
Scheduled tasks a task from the schema stopped, or you want it to run now
Health you want to know if the site’s parts are working
Content moving the site’s content to another site
Schema you changed blueprints or settings and want them checked
Backups you want to know the database is being copied
Audit log you want to know who changed something

1. Cache

Nibble keeps each public page it has built, so the next visitor gets it straight away. The page cache clears itself whenever a record a page shows is published or changed, so you rarely need this screen. How it works, and what the tags are, is in the page cache and CDNs.

  • Clear all pages empties the cache store. The next visit to each page builds it again, so the site is slower for a few minutes. The store is the site’s general cache, so anything else kept there goes too.
  • Clear by tag clears only the pages that show certain records. Give it tags such as entry:12, collection:posts, term:5, taxonomy:topics, global:company or navigation:main, separated by commas or spaces. A page that still looks wrong after a publish is the reason to use it.

If a page is stale because of a CDN in front of the site, clearing here changes nothing: purge the CDN as well.

Command line: none; Utilities is the way.

Lists each search index, the collections and taxonomies it covers and the fields it searches, with a count of documents in the indexes beside the number of live entries they should cover. If the two numbers are far apart, or results lag behind what editors see, rebuild.

Rebuild indexes (needs search.rebuild) empties every index and fills it again from the live content, files included. It is safe at any time; search returns fewer results until it finishes, which on a large site can take a while.

Command line: bin/rails nibble:reindex.

3. Jobs

Nibble does its slow work in the background: sending webhooks, resizing images, updating search, publishing on schedule. Jobs shows that queue.

  • Queues. The five Nibble uses (events, deliveries, media, search, maintenance), how much is waiting in each and how long the oldest has waited. Work that waits a long time means no worker is running.
  • In progress and Scheduled: what is running now, and what is waiting for its time.
  • Failed jobs. Each shows the job, the error and where it failed. Retry queues it again, which is right once you have fixed what made it fail; Discard deletes it, which is right when it no longer matters. The latest 50 are shown.
  • Recurring. The jobs that run on a clock, and when each last ran:
Job When
run_publishing_schedule every minute: publishes and unpublishes what is scheduled
daily_release_check 4am: looks for a newer Nibble release
nightly_database_snapshot 3am: the backup
nightly_trash_purge 3:15am: deletes what has been in the trash long enough
nightly_submission_purge 3:30am: deletes form submissions past their retention
nightly_webhook_delivery_purge 3:45am: deletes webhook deliveries older than 30 days
clear_solid_queue_finished_jobs hourly: clears finished jobs

If a Nibble job is missing from this list, nibble:check warns that its work never runs; it was removed from config/recurring.yml.

The screen says the job queue is unavailable where it is not running, as in development unless you start it. Command line: none; bin/kamal logs shows what the worker prints.

4. Scheduled tasks

Tasks are jobs a developer wrote in the schema, such as “fetch the weather every hour” (see Scheduled tasks). The screen lists each with its schedule, next run and last result.

  • Run now queues one run straight away. It says so if the task was started a moment ago, or declines if the previous run is still going.
  • Pause stops it running on its schedule. Resume starts it again from its next slot; the runs missed while it was paused are not made up.
  • History shows the runs of the last 30 days (up to 100), with their messages.

A task that starts failing tells the site’s administrators once, and shows “failing since” here until it succeeds.

Command line: none. The task’s definition is in site/schema/tasks/.

5. Health

Health checks the site’s four parts now and says ok, degraded (something needs attention) or down (something is broken).

Check Fails or warns when
Database it cannot be reached, or the release has migrations that have not run (run bin/rails db:prepare, or deploy)
Queue no worker has checked in; scheduled publishing has not run in five minutes (both fail); work has waited over five minutes, or there are failed jobs (both warn)
Storage the upload storage, local disk or S3, does not answer
SSR the server-side rendering process does not answer on its port

Where a check does not apply (no job queue in development, rendering off) it says skip. Beside the checks it lists what the site runs on (Ruby, Rails, the environment) and its size: entries, terms, items in the trash and events waiting to be processed. A growing count of waiting events with a healthy queue is worth a report.

Command line: /up answers 200 when the application has started, and is what Kamal’s proxy watches. It does not run these checks.

6. Content

Exports every entry, term, global, menu and redirect, drafts included, as a zip you can keep or import into another site, and imports one: it first shows what would be created, updated or skipped, and changes nothing until you confirm. Exporting needs content.export, importing content.import, and opening the screen asks for your password again. The import’s own options and what a package holds are in Content packages.

Command line: bin/rails nibble:content:export DIR and nibble:content:import DIR.

7. Schema

Shows the schema the site is running (its digest, the theme, and the collections, taxonomies, globals and menus it defines) and the findings of nibble:check: each with the file it concerns, what is wrong and whether it is an error or a warning. Errors stop a deploy. Check it after changing a blueprint, or after an upgrade. Every message is explained in Check messages.

Command line: bin/rails nibble:check.

8. Backups

Shows the most recent copy of the database kept on this server (when it was taken, its size and its file name) and whether an offsite copy is on. The nightly job keeps the last seven days locally; with DB_SNAPSHOT_BUCKET set, it uploads each copy to S3 too. “Backups stay on this server only” means the bucket is unset, and a lost server loses the backups with it.

The screen only reports. It cannot take or restore a copy; how to is in Backups.

9. Audit log

The latest changes first, 25 at a time, with older ones loading as you scroll. Each row has the action, who did it, when, from which address, what it was done to and which fields changed.

It records every change to content (record.created, record.published, record.trashed, and so on), workflow changes, and what concerns access: signing in and out, failed sign-ins, lockouts (auth.locked_out), two-factor and passkeys being added or removed, and role changes. A change made by a connected app is recorded as the person it acts for, with the app’s grant. It is how you answer “who unpublished the pricing page, and when” and “was that sign-in me”.

Command line: none.

Was this page helpful?