« ActionScript 3.0 Presentation and Examples | Main | Clarifying the Term "Flex" »
January 17, 2006
A Ruby Script for Compiling Flex Applications
There have been a lot of posts recently about how to compile Flex applications and ActionScript projects from the command line (on Windows, Mac, and Linux). Mike Chambers has a nice summary which points to all the information you need to get going, and has a bash script which wraps the mxmlc compiler to make compilation easier.
I have some specific compilation needs, however, so I decided to write a Ruby script to wrap the mxml compiler (I'm not a huge fan of bash once my scripts reach a certain level of complexity). Once you have the Flex environment set up, just download the script, make sure it's in your path, configure it, and you can compile like this:
% mxmlc.rb MyApplication.mxml
The script has the following flags:
- -h Help. Prints out this help message.
- -t Tail. After compilation, tails the file specified by the TAIL_PATH variable. (Useful for debugging your application.)
- -o Open. After compilation, opens the generated swf in the application specified by the OPEN_APP variable. (This should probably be something like 'firefox' or 'safari'.)
- -s Show. Show the compilation command rather than actually running it. Useful for debugging if it's not working like you expect it to.
- -c Clean. Removes cache files before compilation so you compile the project completely from scratch.
Before running the script, you have to configure it by defining the following variables at the top:
- FLEX_PATH: The path to your Flex library installation.
- AS_LIB_PATH: Path to your ActionScript libraries. In other words, your classpath. You can specify multiple directories by separating them with a ':' character. You can also add a '$' character anywhere in any of the paths which essentially acts like a wildcard. For instance, if I added the directory /Users/cantrell/projects/$/src/actionscript, then the script would iterate through all the directories in /Users/cantrell/projects and add all those directories, plus /src/actionscript to the classpath. It's an easy way to include an entire source tree with one path. (If the generated directory doesn't actually exist, the script automatically leaves it out.)
- TAIL_PATH: The path to the file you want to tail if you pass in the -t flag.
- OPEN_APP: The application you want to open the resulting swf file in if you pass in the -o flag.
Let me know if you have any problems getting it to run. It was written and tested under Ruby version 1.8.2 which should already be installed on your Mac. To get the alpha version of the Flex Framework and the compiler, check out Flex Builder 2 on Adobe Labs.
Posted by cantrell at January 17, 2006 08:59 AM | References
Comments
Hi Christian,
Cool stuff. i'm actually building a RoR app where i mix Ajax / Html with Flex components and ExternalInterface. This is turning into such a productivity platform, its amazing.
With this good stuff, i can optimize my workflow further.
ps. did you ever take a look at the bobby van der Sluis UFO approach? there is a ruby on rails helper app around that is not very good, imho. What do you think?
Posted by: ilya Devèrs at January 17, 2006 01:43 PM
love the way my name always turns up on the weblogs.macromedia site :)
Posted by: ilya Devers at January 17, 2006 01:44 PM
It's great to see a Ruby programmer in Macromedia err ... Adobe midst. Gives me a little hope that Flash might allow ruby as a scripting option instead of Action Script.
Posted by: Michael Christenson II at January 31, 2006 05:46 PM