Random Thoughs after my Morning RSS reading
I see that an update to the rails framework got posted. Rails 2.3.5 is out in the wild and you can see what is new here. I also read about a new ruby framworks called Rango. Rango favors simplicity over giving you an opinion on how your code should be written. Perhaps I should call it less-opinionated than rails. But it seems to be built from the ground up to be modular and work with Ruby 1.5. Visit here for more information on why you might use Rango. With all these ruby updates I realized its been over a year since I have done any ruby work. And its funny because with Metal and the Rack additions its a more powerful platform than ever. I think I am going to have to find a reason to build something new.
However I have been doing lots of Java and Groovy work. Well those with Spring and Hibernate really. And mostly in the context of how to get data in and out of Flex. When ever I work with these tools I think of ColdFusion and how with the release of version 9 the language has really come back to being core. The last few releases have seen lots of bells and whistles added which are great for demo’s and POC apps, but never seem to benefit me too much. Sure I can manipulate images and pdfs now, and hell I can even automatically make some ajax controls. But those things have been simplified across the board. The things that pulled me away from ColdFusion in the first place was that I was more effective writing code in other languages. The frameworks and tools available there made it easier to work with than doing stuff in CF. But now in CF9 with the ORM and then little things like nested array and object syntax ( think [{foo:'bar',foo:'beer'}]) I think I may revisit CF as well. I had a pretty big application I worked on last year using CF and I was begging the whole time for a better language. I think CF9 might have made that better. Although it still bothers me that I have to actually have a running cf server with my site setup to run my unit tests. It is hard for me to believe that many people use CI in the CF world and that makes me sad. I have spent a good portion of my personal time the last couple months helping organize the FlexUnit 4 project and have really started to push testing and CI in my flex projects and to my clients. Not sure how that will work if I pick up CF again. We will see.
Ok, thanks for hanging in there for my random thoughts. Please feel free to add your random thoughts below.

If you want to bring a little Rails love when you revisit CF, give ColdFusion on Wheels a look:
http://cfwheels.org/
We need to push to get testing built in to the framework, or at least as a plugin to start with.
CF9 is a great tool. I’ve been playing with the Hibernate stuff on my local machine, and it has some nice aspects. I’m still preferring the Wheels ORM over it so far though.
Sim,
Are you saying that you don’t want to keep your CF server running all the time? Or just the fact that you need a CF server, period, that your CI server can talk to (as opposed to just a runtime, eg Java)?
Marc
Hey Mark, I am glad you chimed in here. I dont usually run my tests on the same server where the site is hosted. So i have to then also have cf running on the server where I am doing my CI builds.
But you are right my issue is the fact that i can’t just run CF out of the j2ee scope to test. Not that its really a huge issue in all, but its not how I test with any of the other platforms I work with (java,ruby,python,groovy). So its *seems* like a bundle more work to make the magic happen to me.
I have no issue with the actual testing frameworks and such. :)
Gotcha. So you don’t want to run against your local CF, and you can’t really run against the hosted CF, so you need some sort of “intermediary” server, which seems like a hassle. Is that it?
@Marc Yeah, I don’t run CI locally because it needs to build when the team makes commits. And I dont run it on the live server mostly in case things die. So I have to install CF and have it running on the CI server and have the CI server configured to check out the code into the right place and be able to then execute it from a web request. Which I have not tried to do, but sounds like a hassle :)
Maybe its not such a hassle, but it requires more effort to get done in CF it seems.
It is definitely more work. At home, where MXUnit is built in Hudson, I worked around the hassle by setting my mxunit directory as a custom workspace, so I didn’t need to go through multiple steps. It’s not “perfect” in that the machine where I’m building the nightly is the same one I develop on, but I failed to see much value — at least for that project — in setting up / tearing down a fresh directory every time. The build does an svn checkout, runs the tests, and builds the nightly, so the code is the same. The only real difference in doing it on a separate server or in a VM would be server config, which should not at all affect a project like MXUnit which is merely a framework with no external dependencies (filesystem, databases, etc)
But at work, it’s a whole different realm of pain. And I do exactly waht you describe, which is to have a CI project set up which pulses the SCM to know when to build. However, the ANT builds — when kicked off — are responsible for updating the dev server, running the tests on the dev server, etc. So even in this case, the CI server is just a “runner”, so to speak, because I am not going to set up CF on the CI server when I have a perfectly good dev server.
I feel your pain with this hassle. And it’s certainly not “best practice”. I wonder if there’s a better way. How do other container-based technologies work? And wouldn’t you have this same problem when running functional tests (selenium, etc) from your CI server?
@Mark, well I am glad I am not alone in thinking its a hassle. :) I was worried that maybe I was gonna offend you. I like mxunit and use it, but I dont use it for CI because its a PITA with CF.
And I am doing a lot of promoting of CI with my clients, which leaves me conflicted about CF.
Anyhow, thanks for your comments. hopefully people will read them and have some insight into where to start.
Sim, I’ll tell you how I’ve made peace with all this:
1) If you have a separate Dev server, accept that that server will be your target server for running tests
2) Accept that you’ll need to update your dev server’s code in your ANT file (using svnant, for example) rather than relying on the CI server to do it for you. So you’re using the CI server’s connection to the SCM to kick off builds, but not to update the dev server itself
3) Once you get ANT successfully running tests against your dev server from the commandline or from within eclipse, then you’re 99% there. From there, you just create a new job in the CI server, configure it to point to your ant build’s “runtests” target (or whatever).
It is not as nice, but unless you want to make your CI server a CF server as well, I don’t see a better way of doing it. Well… you could do the custom workspace thing, and I think that is definitely a reasonable choice for single-checkout Projects. But when the project to be built involves multiple SCM directories, it doesn’t work well.