Migrating from ColdFusion to Railo Part 5: Scope names and local variables
Continuing my series of notes on the nitty gritty of migrating from ColdFusion 9 to Railo 4.2.
← Migrating from ColdFusion to Railo Part 4: Null and function arguments
Having paddled in the Railo waters in a dev environment for a couple of months now, I feel sufficiently acclimatised to dive in and switch over my first live app from CF9 to Railo.
I'm pleased to report that the custom engine I use to generate this blog is now running on Railo 4.2.2 4.2.1.
Other apps on the same server are still running CF9 since I've installed the BonCode connector for Railo/Tomcat manually, just for the blog engine. This is proving to be a nice way of allowing apps to be migrated one by one.
Apology
Although a generally smooth transition so far, regular readers may have noticed a glitch in the RSS feeds yesterday: the latest items were re-published without links to the posts themselves. Sorry about that.
The cause was a difference in Railo of which I was well aware, but had failed to check for thoroughly.
Issue
In Railo scope names cannot be overwritten, therefore url
used on its own is effectively a reserved word. If used as an unscoped local/private variable within functions it will continue to refer to the URL scope.
url.key = "value";
function urlTest(){
var url = "blog.simplicityweb.co.uk/";
WriteDump( url );
}
urlTest();
The dump outputs the URL scope struct, not the private string variable.
In my RSS feed generation code I'd stupidly used url
as an unscoped private variable for each of the item links. Interestingly the RSS generation didn't fail even though it was being given a scope/struct rather than a string, it just ignored that key/element when outputting the XML.
Fix
Use another word. Or if really necessary, include the scope, e.g. local.url
or arguments.url
.
Migrating from ColdFusion to Railo Part 6: More ORM issues →