Quite unimaginatively named, the first release focused on getting CRUD (create, read, update, and delete) operations for any table with the same name as your model (as in MVC) component, and the corresponding view and controller, for a subset of common SQL types to be taken care of. Further releases will add more SQL types and more databases supported, as well as integration with an Ajax framework, among other things.

To use, simply extend the CFCs cfrails.Model, cfrails.Controller, and cfrails.View. You've just built a simple application where you can focus on the that part of the application which is unique - the business logic - while ignoring most of the repetitive tasks of inserting, updating, and deleting records in your database.

Though there is very little to configure (simply set the datasource, and sql username and password) if you'd like details on getting started, the most up-to-date version of the doc can be found at http://codeodor.com/cfrails_getting_started.cfm.

Finally, the subversion repository will always contain the most recent version of the code, though I will only re-package it as a zip as I add enough features to make it worthwhile.

If you need help or support, please feel free to contact me through the form at http://codeodor.com/about.cfm (you can also find my IM and voicemail there). Although I will sometimes visit the forums here, I'll respond much quicker to an email.

Updates=============================New on June 12, 2007: Added ability to include application_header.cfm and application_footer.cfm in views/layouts even when using view CFC. Can do the same simply by placing controllerName_header.cfm and controllerName_footer.cfm in views/layouts. Also brought the existing unit tests up to date and released 0.2.5 as a zip.

New on June 11, 2007: Finally migrated request processing out of individual applications and into dispatcher.cfc. Also added some minor Spry integration for form validation. This stuff is in the repo.

New on June 6, 2007: Fixed a major problem introduced in the last round of updates in the SVN repository.

New through May 26, 2007: Added plenty of things to the SVN repository (will eventually give a new version number to the zip). Some of these things include: 1) ability to use primary keys that aren't named "id" (although, still no composite PK support, or for anything other than int without a couple of hacks).

2) Also changed behavior of a file to not catch errors (it was getting hard to debug), added an onchange attribute for form elements (can edit onchange per column without writing out the entire form)

3) added Validations where you can specify a function to call and a message to display upon failure for validating forms (as opposed to simply using the built-in autovalidation based on DBMS metadata)

4) added support for bigint, tinyint, and smalldatetime data types

5) added ability to call a function when outputting a column in a list (though complete closures are not yet fully integrated)

New on Mar. 25. 2007: A couple of more bug fixes packaged into the new version 0.2.4.

New on Mar. 23, 2007: Fixed a couple of issues in the zip and in the repository.

New on Mar. 13, 2007: Changed transaction to exclusive lock for inserts/returning new ID, added field types for radiolist, checkboxlist, multipleselect populated with arrays, added field types for date, datetime, time and corrected behavior to have the model know how to reconstruct it from its parts, and fixed session disappearance issue on CF6.1. Also repackaged as a zip new version 0.2.3

New on Mar. 5, 2007: Added a convenient way to change default behavior of a form field to be a select with options coming from two arrays (a value, and display value). Also added a method valueArray() which takes a query and a column name, and returns an array, to make it easy to use queries with the new select behavior. This is only in the repository for the moment, and the docs have yet to be updated.

New on Mar. 1, 2007: Updated the docs for cfrails at codeodor.com.

New on Feb. 18, 2007: Added the ability to combine columns for display in the default list function.

New on Feb. 14, 2007: (Update 2) Fixed a couple of bugs I found when using related tables and trying to insert/update. Didn't bother changing the version.

New on Feb. 14, 2007: Added more aliases to have the function read better. For instance, instead of doing set_title_new() you can now write newform.set_title() (and similar for edit- and list-related functions). In addition, there is now /some/ ability for relationships among tables to be added into your models via a call to the autoload_relationship() method. Also added some util functions for getModel and getView, to remove the long and repetitive createObject calls (these only currently work fully in CF7.0). Uploaded a new zip as well (finally!).

New on Feb. 6, 2007: Added a couple more methods to help formalize the DSL, including aliases to some camelCaseMethods for their corresponding under_scored_duplicates. As with the last several changes, these are currently only in the repository.

New on Jan. 9, 2007: Added tons of methods to customize behavior and output to the view. Unfortunately, I didn't take the time to document which ones, but browsing the source should return some good functions to use. Updated docs should be coming soon as well - was hoping to use cfcFlexplorer to document the components, but I don't think it runs on CFMX 6.1. Hopefully, I'll have time to do some better documentation on how to use it soon. This hasn't been repackaged as a zip, so if you want it, you'll need to get it from the repository.

New on Nov. 22, 2006: Added before() and after() methods to the controller, to allow programmers to tell the url/controller/action mapper to run specified functions before or after other specified functions. I'm not entirely excited about the ugly implementation, so it will likely change, although I think the interface (as in, the method call) is fine, so you *might* be able to rely on it =)

New on Nov. 16, 2006: Added ability to update human name, priority, and field type of fields in view, without having to use the "init" method after initialization of super(). Field type is now a separate field which allows customization of the type of form field displayed. Also fixed bug that caused columns/fields to be ordered incorrectly upon updating their attributes. This update is currently only available in the repository.

New on Nov. 15, 2006: Fixed a bug that forced usage of default config file even when application specific config file was present. Also improved performance by reducing the number of query-of-queries. Added support for float data types.

New on Nov. 11, 2006: Changed some cftry blocks to just check if fileExists(), since I thought the try was ugly, and fileexists might perform better. Also added some code to allow better customization of views, though it is not fully implemented yet. This update, since it didn't change any behavior, is only included in the repository, not as a separate download. But, if you do take the download, you won't notice any difference in behavior, unless you were using the function in util.cfm -it now returns true or false, depending on if the file was able to be included or not.

New on Nov. 8, 2006: Added ability to change human name (or the display name) of a column, in case you don't like to just replace underscores with spaces.

Requirements:

*CFMX 6.1 or 7.0*Microsoft SQL Server 2000 or 2005

It certainly won't work with MySQL, though when I get around to it, it should be trivially easy to add.