A few weeks ago I attended the SanFlashCisco usergroup meeting which was really great. After the meeting we moved to the Mars bar where I got to know Luke Bayes who founded Project Sprouts. Project Sprouts is a Ruby based open-source, cross-platform project generation and configuration tool for ActionScript 2, ActionScript 3, Adobe AIR and Flex projects. Also be sure to check the the GitHub repository.
# installs project sprouts sudo gem install sprout # creates a new Flex 4 project named SproutsExample sprout -n flex4 SproutsExample # switch directory cd SproutsExample # build the project rake
Now you see all dependencies like SDK and Flash Player being downloaded. So you can run this on a machine without Flex SDK and Flash Player installed because Sprouts handles all dependencies. However, I got this error:
/Library/Ruby/Gems/1.8/gems/sprout-flashplayer-bundle-10.22.7/lib/clix_wrapper.rb:20: (RuntimeError) [ERROR] You must install the rb-appscript gem to use the desktop debug Flash Player, you do this by running: sudo gem install rb-appscript
As being told I tried to run: sudo gem install rb-appscript which ended up in this error:
ERROR: Error installing rb-appscript: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Having XCode installed I tried again sudo gem install rb-appscript and it works!
So another try with rake and horray, the project gets compiled and the standalone flash player comes up showing the compiled default project!
So far so good. Now let’s try to create a class and a unit test for it.
Due to a little bug in the flex 4 gem edit scripts/generate and replace
begin Sprout::Sprout.generate('flex4', ARGV.shift, ARGV, File.dirname(File.dirname(__FILE__))) rescue RubiGen::GeneratorError => e Sprout::Sprout.generate('as3', ARGV.shift, ARGV, File.dirname(File.dirname(__FILE__))) end
Sprout::Sprout.generate('as3', ARGV.shift, ARGV, File.dirname(File.dirname(__FILE__)))
btw: when the fix for this is in place update with
sudo gem update sprout-flex4-bundle
So, now you are ready to create a class including test classes:
# creates the class com.soenkerohde.util.MathUtil and test classes script/generate com.soenkerohde.util.MathUtil
You see the output
create src/com/soenkerohde/util create src/com/soenkerohde/util/MathUtil.as create test/com/soenkerohde/util create test/com/soenkerohde/util/MathUtilTest.as force test/AllTests.as
# Run the tests rake test
Now you see your tests compiling and they fail for now to remind you that you haven’t implemented the actual test code yet.
Pretty impressed by Sprouts so far but enough for now. In my next post I will try to go a little bit deeper and check what else Sprouts can do for me to not waste time on what can be automated.