Airakeを使ってActionScriptで開発するための簡易パッチ

最近、思うことあってAIRの勉強をしようと思いたちました。

しかし、お金がないので、FlexBuilderを使わず、ActionScriptを使ってFlexSDKで。

で、案外AIRをFlexSDKで作っていこうとすると面倒なことに気づきました。ActionScriptのソースからフラッシュのファイルをコンパイルしたりとか、ADFというXML書いたりとか。

まぁ、僕もにわかrubyistなので、こんな面倒なタスクを違うプログラム書く度にやらされるぐらいなら、rakeでさっとできるようにしたろかと思ったりしたのですが、まぁ車輪の再発明になるんじゃないかと思い、"rake air"でぐぐったところ、Airakeというのを発見。やっぱり、みんな考えること同じなのねw。

で、使ってみようと思って、gemでインストールして、airakeコマンドでできたdirのなかのsrcの下にHello.asとして
HelloWorldプログラムでも書いてみて、adlコマンドを実行してくれるタスクのrake air:adlを実行したところエラー。

しばらく、エラーメッセージと格闘してみると、どうもActionScriptで作ることを想定していないように思った。というか、プロジェクト名.mxmlとかできてるから、mxml使っての開発しか想定していないんだろうなぁ。

というわけで、airakeでActionScriptを使って開発できるようにするための簡易パッチを作ってみた。

どんだけ、簡易かというと、まずair:adlとair:compileでしか動作確認していません。また、airakeコマンドでテンプレートとなるActionScriptは吐いたりしません。mxmlがはかれます。
このパッチを使って、ActionScriptを使う場合は、できたdirのsrc内のmxmlファイルを削除してください。

airakeのproject.rbにあててあげてください。ただ、あてて使うかどうかは自己責任で。僕は使うけど。
あと、なにぶんパッチファイル作るの初めてだから、動かないとか間違っているとかあったら、つっこんでいただけると幸いです。

*** /Library/Ruby/Gems/1.8/gems/airake-0.3.1/lib/airake//project.rb	2007-12-30 23:49:41.000000000 +0900
--- project.rb	2007-12-30 23:51:02.000000000 +0900
***************
*** 38,47 ****
        raise ArgumentError, "Invalid MXML path: #{mxml_path}" if mxml_path.blank?
        
        mxml_dir = File.expand_path(File.dirname(mxml_path))
!       project_name = File.basename(mxml_path, ".mxml")
        
        @base_dir = base_dir
        @mxml_path = File.join(mxml_dir, "#{project_name}.mxml")
        @build_env = build_env
        
        @bin_dir = options[:bin_dir] || File.join(base_dir, "bin")
--- 38,49 ----
        raise ArgumentError, "Invalid MXML path: #{mxml_path}" if mxml_path.blank?
        
        mxml_dir = File.expand_path(File.dirname(mxml_path))
! 		ext_name = mxml_path.split(/\./)[-1]
!       project_name = File.basename(mxml_path, ".#{ext_name}")
        
        @base_dir = base_dir
        @mxml_path = File.join(mxml_dir, "#{project_name}.mxml")
+       @mxml_path = File.join(mxml_dir, "#{project_name}.as") unless File.exist? @mxml_path
        @build_env = build_env
        
        @bin_dir = options[:bin_dir] || File.join(base_dir, "bin")
***************
*** 149,152 ****
      
    end
    
! end
\ No newline at end of file
--- 151,154 ----
      
    end
    
! end