Murayama blog.

it works.

rascutすごい。

ひさしぶりのブログ更新。冬休みやしね。
今日はFlexの話。


ここんとこちょくちょくFlexで遊んでたのだけれど、
案の定、Flex Builderのライセンスが切れてしまって、どーだかなーと思ってました。


まぁでもFlex SDKだけは無料で使えるしってことで、
エディタで書いてコンパイルして実行、
こっちの方が基本が学べるぜ、Builderなんか要らないぜ、
的なノリで地道にがんばってました。
mxmlcコンパイラのオプションとかみて、へーとかほーとか唸るのも楽しいし。


前置きが長くなったのですが、
今日はrascutの話。


rascutについて簡単に説明しちゃうと、
rascutはコンパイル、実行作業を自動化してくれます。
#以下のリンク先を参考にしました。


使ってみた感想はめっさ便利。むしろ最強。
普通にSDKだけで開発したら、
コードを編集するたびにターミナルでコンパイルして、ブラウザ(Flash Player)で確認ってのがふつうだろうけど、
rascutを導入すると、コード編集、勝手にブラウザが自動更新、って流れになるからね。


例えるなら、
駅の券売機で切符を買って電車に乗っていたのが、
ピタパになったくらいの衝撃です。
#まぁピタパみたいなん使ったことないんやけど。


正直、Flexの勉強してて、これを知らないのはすごくもったいないと思うので、
これからFlexの勉強を始める人にはオススメです。
参考URL:http://d.hatena.ne.jp/nitoyon/20070914/how_to_install_rascut


あと、インストールで自分のはまった点をまとめておきます。


まず自分がはまったのは、rascut起動時にエラーが出るって現象。
ターミナルはこんなかんじ。

% rascut HelloWorld.as   
[12/27 05:45:44] Compile Start
[12/27 05:45:45] Found update file(s)["./HelloWorld.as"]
/Library/Ruby/Gems/1.8/gems/rascut-0.1.3/lib/rascut/fcsh_wrapper.rb:86:in `compile': Can't get Compile ID (RuntimeError)
 fcsh: コンパイルのターゲット ID として 1 が割り当てられました
設定ファイル "/Developer/SDKs/flex_sdk_3/frameworks/flex-config.xml" をロードしています
/xxx/xxx/HelloWorld.swf (619 bytes)
	from /Library/Ruby/Gems/1.8/gems/rascut-0.1.3/lib/rascut/fcsh_wrapper.rb:76:in `synchronize'
	from /Library/Ruby/Gems/1.8/gems/rascut-0.1.3/lib/rascut/fcsh_wrapper.rb:76:in `compile'
	from /Library/Ruby/Gems/1.8/gems/rascut-0.1.3/lib/rascut/command.rb:60:in `run'
	from /Library/Ruby/Gems/1.8/gems/rascut-0.1.3/bin/rascut:10
	from /usr/bin/rascut:19:in `load'
	from /usr/bin/rascut:19

原因はFlex3 SDKロケールが日本語設定になっているとかで、
rascutとの相性がよくないみたい。


で、多くの場合は

set _JAVA_OPTIONS=-Duser.language=en

とかでFlexロケール設定を変更してうまく動くみたい。
なんだけど、自分の場合はなぜか日本語のままでうまくいきませんでした。。実力不足。


で、いろんなサイトを参考に、
rascutのfcsh_wrapper.rbを編集して対応しました。
参考URL:http://d.hatena.ne.jp/Yoshiori/20080612/1213274978

    #FCSH_RESULT_RE = /fcsh: Assigned (\d+) as the compile target id/
    FCSH_RESULT_RE = /(\d+)/

これでとりあえず自動コンパイルは動いているみたいです。


で、次にはまったのが、ブラウザで描画できない問題。
こちらもいろんなサイトの情報を参考にして
rascuthttpd.rbを編集して対応しました。
参考URL:http://d.hatena.ne.jp/takkkun/20081010/1223643132

    #@path = env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])
    @path = env["PATH_INFO"].empty? || env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])

これで自動コンパイル後、ブラウザで自動更新されるようになりました。
もっと勉強します。