How do you test CFML against multiple versions of ColdFusion?

'How do I run ColdFusion 8 and 7 side by side on IIS?' or 'How can I run Railo and Adobe ColdFusion side by side, so I can share the same code base?', is a question I see quite regularly on CF lists.

I figured I would write up a blog post about how I go about solving this problem, since I do this a lot with my Transfer development.

The quick answer is – I don't.  Trying to set up two different Application servers (CF7 vs CF8) on the same Web Server (IIS or Apache), is not something I desire to tackle, and seems way more convoluted than I care to trouble myself with.

The problem is usually broken down into:

  • How do I test the same code on different versions of CF?
  • How do I do so without having to move/sync files between machines?
  • How do I set it up so it is easy to switch between versions of testing?

I solve each of these problems with Virtual Machines , and Shared Folders.

I have actually bought VMware's Workstation product, and I use it every day, but there are several free products out there that will do virtualisation for free.

First thing first, where does my actual CFML code sit? This sits on my primary machine, commonly referred to as the host machine, in VM speak.  This is because the host has guest machines, namely of the Virtual Machine variety.

This means my CFML code is always available if I want to get my hands on it, and I can open it in Eclipse on my host machine as well, so I do all my editing and development with tools on my host machine.

I also do this because I can then share this code between virtual machines, using a mechanism called Shared folders.

So, now that I have my ColdFusion code, I create myself a new virtual machine.  In my case, I use Ubuntu Server, because its lightweight, and I can get one up and running in about half an hour, but you could use XP, or anything that runs CF.

I then configure my virtual machine to share my host folder which contains my CFML, which is a setting I am able to configure within VMWare. This then becomes accessible at /mnt/hgfs/wwwroot in my Ubuntu server on my VM.

From here, I can now install ColdFusion 8 on this VM, and point it to /mnt/hgfs/wwwroot folder to serve cfml from.

I can then create extra virtual machines, one for each version of ColdFusion that I need.

When I need to test against a version of ColdFusion, all I need to do is start up the virtual machine in question, and browse to it.  To switch versions of ColdFusion, I simply power the current one down, and start up another one.

I find this a much easier way to test the same code base between different versions of ColdFusion than trying to run them side by side.

Leave a Comment

Comments

  • Chris Diller | July 7, 2008

    Mark, great article. This happens to be very timely for a project I am working on. Virtualization rocks!

  • Adam Haskell | July 7, 2008

    Thats indeed an interesting approach that I am considering taking, more to test different OS/HTTP server configs though. For different versions/types of CFML engines I just use ANT to deploy to 4 different wars I have running under jboss (and glassfish). If I want to deploy it more places I just drop a xyz.properties file into _build/instances. Next time I build a project, away it goes off to the new instance.

  • Julian Halliwell | July 11, 2008

    Mark, what OS is your host machine?

  • Mark | July 12, 2008

    @Julian
    I run Ubuntu as my host. But its virtualisation, so it really doesn’t matter.

  • Elaine Dunham | July 15, 2008

    Pretty clever to do it this way Mark , thanks for posting the heads up on the easier way to test the same code base between different versions of ColdFusion.

  • Jerry Loggins | July 16, 2008

    Thanks for explaining how you test the code base between ColdFusion versions. That’s going to come in handy!

  • Charlie Arehart | August 26, 2008

    Mark (and others), I appreciate the value of using VMs and I understand that you (Mark) may have found configuring web servers to support multiple CF versions to be perhaps too convoluted compared to just using VMs.

    But in case it may help any readers, I wrote about an approach that may be simpler than some:

    http://carehart.org/blog/client/index.cfm/2007/8/21/multiple_cf_versions_on_IIS_XP

    My focus there is on using virtual directories, in situations where multiple web sites may not be supported (perhaps part of the hassle Mark was alluding to). I also point to other solutions (including mention of using VMs) and mention other entries I’ve done discussing tools to help with multiple web sites even on versions of Windows that don’t seem to support them. Hope any of the above resources may help some.

  • Ash | September 11, 2008

    In case anyone is looking to run multiple websites on their windows machine, i have been using the Web Developer Server Suite which works fine with CF 7/8. It’s very much like xamp etc. however its got a control center program that gives you links to the vhosts file for apache and the windows hosts file. – http://www.devside.net

  • Ash | September 15, 2008

    Seems that devside.net is selling commercial software now, however the earlier release of the server suite is located at http://sourceforge.net/projects/webdeveloper/

  • Ronald | January 26, 2009

    Have you been able to run SQL Server successfully from a guest machine with the actual database on the host machine? I was hoping to have all my development environment in a guest machine with all the source and data on the host, but ran into a problem with the database…

  • Mark | January 26, 2009

    @Ronald,

    I run my databases on a separate VM from my ColdFusion install, and it works fine.

    Sounds like a question for ColdFusion mailing lists!