Wheels Blog

News, tutorials, and release announcements for the Wheels CFML MVC framework.

RSS

Request IDs, /up, and Logs a Machine Can Read: Observability in Wheels 4

Peter Amiri

Three small pieces of plumbing turn 'the site gave me an error around lunchtime' into a single grep: the RequestId middleware, the /up health endpoint your app already ships, and a forty-line JSON logging pattern. Plus the two health-endpoint mistakes everyone makes once.

CORS in Wheels 4: Deny by Default, Open It Correctly

Peter Amiri

Wheels 4 denies cross-origin requests until you say otherwise — and the Cors middleware refuses the popular ways of saying it wrong. The deny-all breaking change, single-origin resolution, Vary: Origin, preflight handling, and the legacy-settings trap the framework defuses for you.

One Authenticator, Three Doors: Sessions, Tokens, and JWTs in Wheels 4

Peter Amiri

Wheels 4 ships session, API-token, and JWT authentication as pluggable strategies behind one Authenticator registry. Wiring up all three doors — with the sharp edges: private filters, dynamic finders, the 32-byte JWT secret minimum, and the inline-closure constructor that crashes Adobe ColdFusion.

Wheels 4 Without the Tooling: Two Zips, Zero Dependencies

Peter Amiri

The manual install that took the community two days to reverse-engineer in Wheels 3 is now two zip files and zero external dependencies. How to install, migrate, test, seed, and upgrade a Wheels 4 app with no CLI, no CommandBox, and no package manager — plus the new guides that document every step.

Sending Email in Wheels 4.0: sendEmail, Templates, and Background Delivery

Peter Amiri

A complete how-to for sending email in Wheels 4.0 — the sendEmail controller helper, how email view templates resolve, multipart text+html, attachments, and the correct way to deliver mail from a background job. Includes the sharp edges that actually bite.

File Uploads in Wheels 4.0, the Idiomatic Way

Peter Amiri

Wheels 4.0 has no ActiveStorage-style attachment system — and that's fine. This how-to walks the honest idiomatic upload flow end to end: fileField/fileFieldTag form helpers, the startFormTag multipart trap, native cffile in the controller, model validation over the result, and traversal-safe downloads with sendFile.

Caching in Wheels 4.0: Actions, Queries, Partials, and Invalidation

Peter Amiri

A practical, source-grounded tour of every cache Wheels 4.0 actually ships — action caching, query caching, partial and page caching — plus the honest truth about invalidation: there's no clearCache(key), so you live on short expiry times and full reloads.

Associations Deep-Dive: hasMany, belongsTo, Nested Properties, and Eager Loading

Peter Amiri

A comprehensive Wheels 4.0 guide to model associations — hasMany, belongsTo, and hasOne, the exact dynamic methods each one generates, dependent-delete cascades, nested properties from form params, eager loading with include=, has-many-through, and polymorphic associations — with the sharp edges that bite in practice.

Form Helpers in Wheels 4.0: Object Forms, HTML5 Fields, and Error Rendering

Peter Amiri

A worked how-to on Wheels 4.0 form helpers: object-bound fields that round-trip into params.user.email, the real HTML5 single-input helpers, and the two error-rendering helpers — plus the sharp edges that bite first.

Validations Beyond Presence: Conditional Rules, Custom Validators, and Enum Integration

Peter Amiri

A practical Wheels 4.0 guide to the full validation surface — conditional rules with condition/unless/when, custom validate() methods, enum() integration, and how to read the error API correctly. Built end-to-end around one User model, with every behavior grounded in the framework source.

Newsletter

Release notes and new posts, once a month. No spam.

Prefer RSS? Subscribe to the feed →