Another day, another extension update. If you use the CF Debug Copy extension for Firefox you may be happy to know that I've just posted an update to RIAForge which works with Firefox 3.5. Enjoy!
Just a quick post to let folks know I've updated the CF No Debug Firefox extension to work with Firefox 3.5. You can get the latest from RIAForge.
With Firefox 3.5 in release candidate and Firebug 1.4 in its third beta release (after 31 alpha releases) I decided it was time to get my act together and update ColdFire to work with the latest and greatest. If you download ColdFire from the RIAForge site you will notice the zip now contains two releases: 220.127.116.11 and 18.104.22.168. The 1.3 release is the current "production" release which runs on Firefox 3.0 and Firebug 1.3. The 1.4 release should be considered beta since it requires Firebug 1.4, which will run on either Firefox 3.0 or 3.5. There are no new features in the 1.4 release, just support for these awesome new Firefox/Firebug releases. (The ColdFusion and Railo debugging templates are the same from 1.3 to 1.4, so if you want to run Firefox 3.0/Firebug 1.3 and Firefox 3.5/Firebug 1.4 side by side you don't have to change any of the server side ColdFire bits.)
I have to give a shout out to Jan "Honza" Odvarko for the great work he is doing on with Firebug's network monitoring. In earlier versions of ColdFire we actually rolled our own network monitoring and it was a huge pain. For ColdFire 1.2 we wised-up and used some crazy closure hacks to leverage Firebug's network monitor. It worked, allowing us to introduce features like the response queue, but boy was it ugly and brittle. Firebug 1.3 introduced a API for its NetworkMonitor module which allowed extension developers to register listeners and receive data from the network panel, which we in turn leveraged in ColdFire 1.3. Now Firebug 1.4 expands on that API, and best of all Honza has done a great job of documenting this expanded API on his blog. (Anyone interested in working with Firebug should definitely read Honza's blog, Software is Hard. I wish many of those articles had been written when I was digging through the Firebug code trying to figure things out.) ColdFire 1.4 has been updated to use this new API, which was the only significant change to ColdFire code for this release.
That's all for now. As always please report any issues on the RIAForge bug tracker.
Just a quick post to let folks know I've just uploaded a extension only update for ColdFire which fixes a stored procedure related issue with the DB Queries tab. Check out the RIAForge site for more info.
Here is a interesting bug I ran into today while using CF No Debug. If you use the <cftrace> tag with the _cf_nodebug parameter set to true, the tag will throw the following error:
Variable DEBUGGER is undefined.
In ColdFusion, the <cftrace> tag is implemented in CFML via the pre-complied WEB-INF/cftags/trace.cfm template. Now, this is simply a guess, but I bet that trace.cfm uses the IsDebugMode() function to determine if it should attempt to write trace info to the debugging query. Possibly something like the following:
<cfset factory = CreateObject("java","coldfusion.server.ServiceFactory")>
<cfset debugger = factory.getDebuggingService().getDebugger()>
<!--- add trace data to debugger --->
As I previously noted there is a bug with IsDebugMode() where it returns true when using _cf_nodebug = true, even though the debugging service is disabled. If something like the above code is used in trace.cfm, IsDebugMode() would return a false positive when _cf_nodebug is true and the ColdFusion ServiceFactory would return null for the debugger variable. When a null value is assigned to a ColdFusion variable it can lead to the undefined error we see in this case.
I've logged a bug with Adobe for this, but it is something to look out for if you use CF No Debug and start seeing "Variable DEBUGGER is undefined" errors.
I just uploaded a new version of ColdFire to RIAForge. This release is an extension only update so there is no need to update the server bits.
Here is a quick rundown of what is new/fixed:
- Total execution time is now shown on general tab.
- Users can choose to have the execution times tab show the totals at the top, using the new "Exec Time Totals on Top" option.
- Fixed issue where components with no methods would break variables output.
- Fixed user preferences (selected options) so that they are now persisted.
Also, one thing I noticed while working on this release is that the variables tab does not correctly display child components. If you have a component that extends another component, you will only see the methods defined on the child component and the display will not indicate that the component extends another component. I'll have to look into what can be done to fix this, but in the meantime it is something to be aware of if you depend on ColdFire to give you the API for a component.
As always, keep the bug reports and feature requests coming.
Lately I've been doing a lot of work with Flex messaging using ColdFusion and BlazeDS. Recently I was trying to get message filtering working using the Flex Consumer component's selector property. After a few false starts I found that I just couldn't get selectors to work using either BlazeDS or LCDS.
Last week I updated my CF No Debug extension so that it will remember what state it was last in when you open Firefox. Before, when you closed and re-opened Firefox the extension was always disabled, allowing ColdFusion request debugging to execute. Now if you have the extension enabled when you close Firefox, it will remain enabled when you open Firefox again. This is an extension only update, so there is no need to update the servlet filter.
So in my last post I talked about the _cf_nodebug parameter and how it can be used for disabling ColdFusion request debugging for single requests. Today I'm announcing a new Firefox extension and servlet filter that allow you to disable request debugging without appending the _cf_nodebug parameter to your URL. Install the servlet filter on your development server and the extension in Firefox and you can easily disable debugging for requests made through Firefox as needed via a nice little status bar icon. You can find out more and see screen shots at cfnodebug.riaforge.org.