ColdFusion on Wheels Blog

CFWheels 1.4.5 maintenance Release

Today sees another maintenance release for the 1.4.x series

Download 1.4.5 today to fix the following:

Bug Fixes

  • Display URL correctly in error email when on HTTPS – [Per Djurner]
  • Added the datetimeoffset data type to the Microsoft SQL Server adapter – [Danny Beard]
  • Fix for test link display in debug footer – #588 [Tom King]
  • Don’t include query string when looking for image on file through imageTag() – [Per Djurner]
  • Format numbers in paginationLinks() – [Per Djurner]
  • Correct plugin filename case on application startup – #586 [Chris Peters]
  • Clear out cached queries on reload – #585 [Andy Bellenie]

Also don’t forget to check the upgrade notes.

10 years of CFWheels / Welcome Adam / CFWheels 2.x

A bit of history:

It’s slightly hard to put an exact date on it, but this year (probably) celebrates 10 years of CFWheels!

Obviously, in the internet age, 10 years is an awfully long time. The first mention I can find if from Pete Freitag’s “Get Wheelin” blog post celebrating CFWheels 0.1 in November 2005. Rob Cameron, the original author moved over to Rails full time a few years later: you can catch up with him at Over the years there have been a lot of contributors – whilst our GitHub repo hasn’t quite got that (very) early history, since Jul 23, 2006, we’ve had:

  • 2825 commits (Per Djurner has the dubious claim to fame of the first commit, and at time of writing, the most recent too :))
  • 22 Branches
  • 43 Releases
  • 76 forks
  • 453 issues

Whilst there was a “bit of a break” around 2012/13, Wheels has been going from strength to strength. Contributors have changed and moved on, and so have core team members. Our thanks go out to all of them!

Welcome Adam!
We’re very pleased that Adam Chapman (@chapmandu) has agreed to join the CFWheels core team! He’s been a long-time supporter of wheels, we’re very glad to have him on board. We expect great things AC…. great things. 🙂 You can find Adam’s blog here.

CFWheels 2.x:

Lots of chat at the moment about the next major release of CFWheels – please do get involved on the Google group if you’ve got ideas. At the moment, amongst lots of micro improvements, we’re looking at:

  • integrating the ColdRoute plugin into the core:  ColdRoute allows you to define RESTful resources through new expressive routing helpers and controller conventions. It also allows you to organize controllers and views into subfolders via “namespaces” or “modules.”
  • improving wheels as a true RESTful service provider: you can already return JSON, XML and lots of other good stuff, but we’re looking to improve things like setting custom headers, and really controlling your APIs response
  • improving the plugin architecture, and generally looking a more “modular” way of doing things.
  • dropping CF8/9 support; dropping Railo (as you should all be on Lucee now!!)
  • better Commandbox support: we’ll be looking at CLI type stuff to make getting going with wheels even quicker.

Got an idea? Get on the Google Group and let us know!

CFWheels 1.4.4 maintenance Release

Today sees another maintenance release for the 1.4.x series

Download 1.4.4 today to fix the following:

Bug Fixes

  • Check global “cacheActions” setting – #572 [Andy Bellenie, Per Djurner]
  • Fixed parsing for SQL IN parameters – #564 [Lee Bartelme, Per Djurner]
  • Pass through all arguments properly when using findOrCreateBy – #561 [Per Djurner]
  • Make it possible to disable session management on a per request basis – #493 [Andy Bellenie, Per Djurner]
  • Allow mailParams to be passed through to sendEmail() – #565 [Tom King]
  • Fixed inconsistency in form helpers for nested properties – [Marc Funaro, Per Djurner, Chris Peters]
  • Fixed issue with grouping on associated models – [Song Lin, Per Djurner]
  • Made the pagination() function available globally – #560 [Chris Peters, Per Djurner]

Also don’t forget to check the upgrade notes.

CFWheels 1.4.3 maintenance release

Today sees another maintenance release for the 1.4.x series

Download 1.4.3 today to fix the following:

Bug Fixes

  • Fix for using cfscript operators in condition and unless arguments.
  • Added try / catch on getting host name since CreateObject(“java”) can be unavailable for security reasons.
  • Fixed bug with cache keys always changing even though the input was the same.
  • Remove white space character in output.
  • Use correct path info in error email and debug area.
  • Fixed plugin injection issue on start-up.
  • Skip calculated properties that are aggregate SQL functions in the GROUP BY clause.
  • Fixed error when trying to validate uniqueness on blank numeric properties.

Also don’t forget to check the upgrade notes.

CFWheels 1.4.2 maintenance release

Today sees another maintenance release for the 1.4.x series

Download 1.4.2 today to fix the following:

Bug Fixes

  • Fix for selecting distinct with calculated property – [Edward Chanter, Per Djurner]
  • Fixed so default values are applied to non persistent properties – #519 [Andy Bellenie]
  • Fixed missing var scope causing error on Lucee – [Russ Michaels, Tom King]
  • Don’t show debug info on AJAX requests – #496 [Leroy Mah, Per Djurner]
  • Fixed permissions issue with imageTag() when running on shared hosting – [Per Djurner]
  • Removed use of ExpandPath() in debug file since it was causing file permission issues – [Peter Hopman, Per Djurner]
  • Skip setting object property when NULL is passed in – #507 [Andy Bellenie, Per Djurner]
  • Fixed edge case issue with calling dynamic association methods – #501 [Dominik Hofer, Per Djurner]
  • Fixed lock name in onSessionEnd event – #499 [Per Djurner]
  • Ignore white space in the “where” argument to finders – #503 [Per Djurner]
  • Ignore spaces in the “keys” argument to hasManyCheckBox() and hasManyRadioButton() – [Song Lin, Per Djurner]
  • Skip running callbacks when validating uniqueness and similar situations – #492 [Andy Bellenie, Per Djurner]
  • Avoid plugin directory exception during first application load – #541 [Adam Chapman, Per Djurner]
  • Fix for using cfscript operators in “condition” and “unless” argument on ACF 8 – #531 [Per Djurner]
  • Fix for rolling back nested properties – #539 [James Gibson, Chris Peters, Per Djurner]
  • afterSave and afterCreate callbacks are not firing on nested objects – #525 [Adam Chapman, Chris Peters, Per Djurner]
  • Ability to pass in list to “includeBlank” argument on dateSelect() and similar functions – #502 [Thorsten Eilers, Per Djurner]
  • Ability to set attributes on the input element created by buttonTo() – [Per Djurner]
  • Added missing “onlyPath” argument to imageTag() – #508 [Per Djurner]
  • Corrected output of property labels in error messages – #494 [Andy Bellenie]

Also don’t forget to check the upgrade notes.

CFWheels 1.4.1 maintenance release

Today sees a small maintenance release for the 1.4.x series

Download 1.4.1 today to fix the following:

Bug Fixes

  • Skip callbacks when running calculation methods  [Adam Chapman, Per Djurner]
  • Fixed rewrite rules so base URL is rewritten correctly on Apache  [Jeremy Keczan, Per Djurner]
  • Removed incorrect path info information set by Apache [David Belanger, Per Djurner]
  • Fixed routing bug when running from a sub folder on Adobe ColdFusion 10 – [Brant Nielsen, Per Djurner]
  • Made sure error emails never depend on application variables being set – [Per Djurner]


  • Removed tests folder – [Per Djurner]
  • Updates to framework utility pages – Update logo, Fix links on congrats page to point to new documentation site – [Chris Peters]

Also don’t forget to check the upgrade notes

CFWheels 1.4.0 released, New documentation too..

First, some new announcements

You may have noticed a few changes around here! With the release of 1.4, we’ve taken the opportunity to greatly simplify our web footprint.

  • All documentation now lives on (thanks to We hope this will allow people to more easily contribute to the fantastic documentation already there; you need a (free) account, but you should be able to ‘suggest edits’ for any page – feel free to help us out! We’re in the process of adding redirects from the old documentation – please bear with us on this one.
  • You’ll notice the plugin listings are greatly simplified – this is a temporary measure whilst we look at the whole plugin ecosystem generally
  • Downloads now live on the site at, but don’t forget you can always get everything at the Git Repo
  • You’ll notice a small change in the cfWheels logo – don’t panic, you’re not going mad, we just thought it might be nice to have something new and shiny to look at.
  • Tom King and Tim Badolato are now part of the Wheels core team. “Per” still does all the actual real work 🙂

Onwards and upwards!

1.4 is released, which brings the usual host of fixes and improvements, most noticeably a few tweaks to get Wheels running with Lucee Server: CFWheels should now correctly identify itself as Lucee in the debug output, and various other (older) Railo specific tweaks should get applied. Note, if you’re ever testing for ‘railo’ in the server scope on Lucee, it will return as true.

A couple of other changes might catch you out too, noticeably removal of the h() function, and “development” now being the default environment mode.

Get 1.4 Now!

Upgrading from 1.3x

  • Replace the entire /wheels/ folder
  • Replace URL rewriting rule files – i.e, /.htaccess, /web.config, /IsapiRewrite4.ini

Release notes:

Model Enhancements

  • Allow spaces in list passed in to the “include” argument on finders – #150 [Per Djurner]
  • Added findOrCreateByProperty, findAllKeys(), findFirst() and findLast() finder methods – [Per Djurner]
  • Add support for “GROUP BY” in sum(), average() etc. – #464 [Per Djurner]
  • Made exists() check for any record when “key” and “where” is not passed in [Per Djurner]
  • Added clearChangeInformation() for clearing knowledge of object changes – #433 [Jeremy Keczan, Per Djurner]
  • Evaluate validation error messages at runtime – #470 [Per Djurner]

View Enhancements

  • Respect blank “text” argument in linkTo() – #365 [Adam Chapman, Tony Petruzzi, Per Djurner]
  • Allow styleSheetLinkTag() and JavaScriptIncludeTag() to reference files starting from the root – [Per Djurner]
  • Added “monthNames” and “monthAbbreviations” arguments to form helpers for easy localization – [Per Djurner]

Controller Enhancements

  • Ability to prepend functions to the filter chain instead of appending – #321 [Per Djurner]
  • Pass in “appendToKey” to caches() to cache content separately – #439 [Per Djurner]
  • Allow external attachments with sendEmail() – [Adam Chapman, Tony Petruzzi]
  • Ability to redirect to a specific URL – [Simon Allard]
  • Option to correct JSON output by passing in x=”string” or x=”integer” to renderWith() – [Per Djurner]

Bug Fixes

  • Fix for blank path_info in CGI scope – #447 [Tim Badolato, Tony Petruzzi, Per Djurner]
  • Fix for accessing request scope key that does not exist from session – #446 [Brent Alexander, Per Djurner]
  • Removed “validate” property that was incorrectly set when calling create() – [Per Djurner]
  • Pass through “parameterize” in exists() [Per Djurner]
  • Do not remove “AS” when it’s in the SQL for a calculated property – #453 [Jean Duteau, Per Djurner]
  • Obfuscate parameters in named route patterns when URL rewriting is off – #455 [Amber Cline, Per Djurner]
  • Pass through “includeSoftDeletes” argument correctly – #451 [Jon Brose]


  • Support for the Lucee server – [Tom King]
  • Made “development” the default environment mode – [Per Djurner]
  • Removed deprecation work-around for the “if” argument on validation helpers – [Per Djurner]
  • Removed deprecation work-around for the “class” argument on association initialization methods – [Per Djurner]
  • Removed the “lib” folder – [Per Djurner]
  • Removed the h() function, use XMLFormat() instead – [Per Djurner]

CFWheels 1.3.3 maintenance release

Today, we release the third maintenance release in the 1.3.x series.

Download version 1.3.3 to fix the following bugs:

  • Correct output of boolean HTML attributes using new global booleanAttributes setting
  • Make sure locks cannot be affected by other applications running on the same server
  • Fixed bug with updating an integer column from NULL to 0
  • Fixed potential permissions issue when running on shared hosting

More info in the 1.3.3 CHANGELOG.

If you’re upgrading from 1.3.0+, you just need to replace the wheels folder with the new one from the download. If you’re upgrading from an older version of CFWheels, see the instructions.

CFWheels 1.3.2 maintenance release

Today we release the second maintenance release in the 1.3.x series.

Download version 1.3.2 to fix the following bugs:

  • Fixed regression bug with setting unique id for nested properties
  • Fixed reversed usage for setting option text/value when passing in an array of structs to select() / selectTag()
  • Tableless models should not require dataSourceName – #351
  • Fixed issue with using group by with calculated properties – #89
  • Fixed ORM incorrectly parsing a property value as NULL – #209
  • Fixed bug with application scope when sharing name across applications – #359
  • Fix for removing AS from ORDER BY clause in Microsoft SQL Server – #132
  • Calling valid() will now correctly validate all associations when using nested properties – #284
  • Fixed issue with save()causing callbacks to run twice when using nested properties – #284
  • Fixed race condition issue with caching – #376
  • Fixed number parsing in WHERE strings

More info in the 1.3.2 CHANGELOG.

If you’re upgrading from 1.3.0+, you just need to replace the wheels folder with the new one from the download. If you’re upgrading from an older version of CFWheels, see the instructions.

CFWheels 1.3.1 maintenance release

We have fixed a few bugs discovered by the community after releasing CFWheels 1.3.0 a few weeks ago and packaged them as version 1.3.1.

Behold the major fixes released in version 1.3.1:

  • Fixed issue with calling addFormat() on application start-up.
  • Fixed so that Railo outputs IDs for nested properties as integers instead of exponents.
  • Make sure that IDs for nested properties are unique.

See the v1.3.1 CHANGELOG for a full record of all changes.

To upgrade from 1.3.0, replace the wheels folder in your application with the new one from the zip file. See the instructions if you’re upgrading from an earlier release.

Keep rocking, CFWheels community! \m/