Skip to content

Running a site

Check messages

Every kind of message bin/rails nibble:check can print, what it means and how to make it go away.

bin/rails nibble:check reads the schema, the theme, the settings and the database, and prints what it finds. This page is for the moment it prints something you do not recognise: find the message below, read what it means, and do what the last column says. The same findings appear under Utilities → Schema in the Control Plane.

Each line starts with where the problem is, then what is wrong:

! site/schema/forms/contact.yml: spam.honeypot 'email' looks like a field browsers and password managers fill in …
✗ blueprints/collections/posts/post.yml: field 'hero' uses unknown validation rule 'maxx'
  • ✗ is an error. The check fails, and a deploy or an upgrade stops.
  • ! is a warning. The site works, but something is probably not what you meant.

Messages that name a file are about that file, and its path is relative to the site. Where a message says a field, field 'a.b' is the path through grids and replicators.

--allow-data-loss reports the “still hold it” messages in section 4 as warnings instead of errors; use it only when you mean to drop that data. --support adds a summary of the install to paste into an issue.

1. The schema files

Nibble reads every file under site/schema/, the theme’s schema/ and its own. An error in one of them stops the rest of the check, since nothing else can be judged until it is fixed.

Message Meaning Fix
must be a YAML mapping, invalid YAML: … the file is empty, a list, or not valid YAML fix the syntax; the message names the line
unknown key (allowed: …) a key the schema does not read, often a typo use one of the listed keys; the modelling guides say what each means
is required a key that file must have is missing add it
has an invalid value: … the key is there but the wrong shape compare with the guide for that kind of file
format … isn't supported the file’s schema: number is not the one this release reads set it to the number the message gives
unknown schema folder '…', files can't be nested in folders, blueprints live at … a file is somewhere the schema does not look move it to the folder the message names
belongs to …, which isn't defined a blueprint for a collection or taxonomy that does not exist create the collection, or move or delete the blueprint
no blueprint at …, no taxonomy '…' a collection or field names something that is not there create it, or correct the handle
… doesn't exist in the schema, … is core-owned and can't be disabled disable: in config/nibble.yml names something missing or something Nibble needs remove that line
handles can't contain '::' :: is reserved for Nibble’s own fieldsets rename it

2. Fields

Run for every blueprint, fieldset, global and form.

Message Meaning Fix
field '…' uses unknown validation rule '…' a validate: rule that does not exist correct the name, or register the rule
field '…' <reason> (for example earliest … is after latest …, has allow_any: false but no swatches to choose from, default … isn't a colour written as #rrggbb) the fieldtype rejects its own settings change the setting the message names
field '…' has a message for '…', which it has no rule for a custom messages: entry for a rule the field does not use remove it, or add the rule
field '…' has a '…' message for locale '…', which the site doesn't have a translated message for a language not in locales remove it or add the locale
field '…' has a required condition that … a conditional required that is not exactly one of the condition forms, or names a field that is not beside it rewrite it as the message says
field '…' is a note, which only displays text … a note field with required, hidden, encrypt or a default remove those settings
field '…' is a calculation, which only a form can have the calculation fieldtype is used outside a form use it in a form, or use another fieldtype
field '…' takes its options from content, which only a form's field can a choice field in a blueprint or global set with options: { from: entries:… } list its options, or use an entries or terms field
field '…' has computed default '…', which isn't registered default: computed:name with no such default register it, or use a plain default
field handle '…' is reserved for the entry itself the handle is one the entry already uses (slug, status, uri, template and the like) rename the field
field '…' is a …, which apps can't be told how to write: give the fieldtype a json_schema (warning) a custom fieldtype that agents and the management API cannot describe add a json_schema to the fieldtype

3. Forms and tasks

A form’s messages begin with its file. The common ones:

Message Meaning Fix
field '…' uses '…', which can't be used on a public form a fieldtype that is not safe to show visitors use a public fieldtype
field handle '…' clashes with the honeypot the honeypot field name is also a real field rename one
spam.honeypot '…' looks like a field browsers and password managers fill in (warning) real visitors may be caught as spam choose an odd name
field '…' has prefill but isn't hidden: true, … has value but isn't hidden: true a preset value the visitor would see and change add hidden: true or drop it
… needs the form to store submissions uploads, limits or resume depend on stored submissions set the form to store them
limits.…, spam.…, resume…, notify.N.…, retention_days … a setting with a wrong shape; the message says what it should be see Forms
api.N … a delivery with neither use nor url, an unknown API connection, a bad method, format or mode see Forms
… has a formula … a calculation field that does not parse, or names a field that is missing or not numeric fix the formula
field '…' options… options from content whose query, value, label, limit or parent is wrong; the message names which see Choices from content
success needs a message or a redirect, handler '…' isn't registered a form with no success outcome, or a handler name that does not exist add one, or register the handler
… has captcha: true but Integrations has no CAPTCHA keys, so every submission is refused (warning) the form needs a CAPTCHA and none is configured add the keys under Integrations, or turn captcha off
form '…' has N stored submissions but isn't in the schema … (warning) a form was removed while its submissions remain; the daily purge will delete them restore the form, or export the submissions first

Scheduled tasks print: needs exactly one of fetch, request or handler; schedule '…' runs more often than once a minute; fetch.… isn't a key a task reads; … needs either use or url; … calls HOST, which isn't in outbound.allowed_hosts; fetch.into … and fetch.into.map names '…', which … doesn't have; and collection '…' uses the review workflow, so a task can't publish into it. Each says what to change; the keys are in Scheduled tasks.

4. Stored content and the schema

These run against the database, so a build with no database does not show them.

Message Meaning Fix
not set up, or has migrations to run: run bin/rails db:prepare the database is behind the code run it (a deploy does)
<scope>: <field> was removed and N records still hold it you took a field out of a blueprint while entries still store a value for it add a content migration to move or delete the value, or put the field back; --allow-data-loss accepts losing it
<scope>: <field> changed from A to B and N records hold a value the field’s type changed under stored values write a migration to convert them
blueprint '…' was removed and N records still use it as above, for a whole blueprint add a change_blueprint migration
collection '…' was removed and N records still belong to it a collection left the schema with entries in it restore it, or add a rename_collection or delete_collection migration
global set '…' was removed and N records still belong to it a global set left the schema with values saved in it restore it, or add a rename_global or delete_global migration
navigation '…' has a menu saved in N locales but isn't in the schema … (warning) a navigation left the schema with its menus still stored; nothing shows them restore it, or add a rename_navigation or delete_navigation migration
site/schema/migrations: … a pending content migration is invalid fix the migration file named
role '…': ability '…' doesn't match anything in this site's schema a custom role grants an ability on a collection or form that no longer exists edit the role under Roles; a pending migration that renames or deletes the handle answers it
collection '…' has N entries not at the address the route gives; bin/rails nibble:prepare moves them (warning) a route changed and the saved addresses are stale run nibble:prepare (a deploy does)
N entries have the required toggle '…' switched off, so they can't be published until … (warning) a toggle marked required is off on existing records switch it on or make the field optional
N entries (…) have a value in the email field '…' that fails its format check … (warning) stored values that no longer pass the field’s format correct them in the entries named

5. Settings and the theme

Message Meaning Fix
outbound.allow_private_networks is set in production, where it is ignored a development setting left in config/nibble.yml remove it
collection '…' doesn't exist, taxonomy '…' doesn't exist (navigation) a menu offers something that is gone edit the navigation file
icon '…' isn't one of the Control Plane icons an unknown icon: on a collection or taxonomy use one of the named icons
index '…' uses missing collection '…', … searches field '…', which no blueprint of its collections defines search settings name something that is not there correct search.yml
index '…' lists collections, which are no longer read: give each one search: … the old way of assigning a collection to an index put search: <index> in the collection’s own file
query '…' … a view’s or layout’s .yml sidecar has an invalid query the message says which part
page.<key> isn't a page key (use include) a page: entry in a sidecar with a key other than include use include
page.include '…' isn't a relationship field in any blueprint, page.include 'children' needs a structured collection page: { include: … } names something that can’t be expanded name an entries or terms field, or children once a collection is structured
query '…' is named like the … prop every page is given a layout’s query is called page, layout, site, seo or preview rename it
query '…' is also a view's query, so one would hide the other a layout and a view use the same query name rename one
extends '…', which has no sidecar (layouts/….yml), extends '…', which leads back to itself a layout sidecar’s extends names a layout with no sidecar, or the layouts extend each other in a circle name a layout that has a sidecar
query '…' hides the … prop every view is given; rename the query (warning) a view’s query is called page, layout, site, seo or preview rename it
theme.yml: '…' is required, … isn't a manifest key, handle … must match the folder name, nibble … isn't compatible with theme API … the theme’s manifest fix theme.yml
required view '….vue' is missing, required layout 'default.vue' is missing, set '…' has no view sets/….vue the theme lacks a view the site needs add the view
index_route needs the view … .vue, which … doesn't have a collection with an index page and a theme with no view for it add the view or set index_template
generated types are out of date: run bin/rails nibble:schema:types site/types.d.ts no longer matches the schema run it (nibble:build does too)
… has changed since you took this copy on … (warning) a file you ejected, where Nibble’s own has since changed compare, and merge by hand
changed here rather than ejected, so the next upgrade will refuse until it is put back (warning) you edited a file under vendor/nibble/ put it back, or nibble:eject it

6. The server

Only checked where the site is deployed (production); a laptop does not see these.

Message Meaning Fix
SITE_URL is not set …, … is not a valid URL, … points at localhost …, … is not https the public address is missing or wrong, so canonical links and mail would be wrong set SITE_URL to the https address
RAILS_MASTER_KEY is missing or wrong …, cannot decrypt the credentials the encrypted credentials cannot be read provide the key in config/master.key or the environment
storage: AWS_BUCKET_NAME, AWS_REGION, aws.access_key_id unset, so uploads and image transforms will fail S3 is in use, and part of its settings are missing set what is listed; see Configuration
theme: no theme is set … (warning) only the Control Plane serves name a theme
theme: '…' has no folder …, asks for a different Nibble than this one the theme named is not installed or not for this release install it, or choose another
mail: no SMTP credentials … (warning) password resets and notifications will not send add smtp.username and smtp.password to the credentials
passkeys: config/initializers/webauthn.rb doesn't allow … (warning) passkeys will not work at this address add the address to the initializer’s allowed origins
backups: DB_SNAPSHOT_BUCKET unset, so nothing is copied offsite (warning) the nightly copy stays on the server set the bucket; see Backups
schedule: config/recurring.yml doesn't schedule …, so that work never runs (warning) a job Nibble ships has been removed from the schedule restore it from Utilities → Jobs

The errors here also stop the site starting, which is deliberate: serving with a wrong address or no credentials publishes broken links or drops uploads. A console, a migration and nibble:check itself still run, so you can fix it.

Was this page helpful?

Previous
Webhooks