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+)/
これでとりあえず自動コンパイルは動いているみたいです。
で、次にはまったのが、ブラウザで描画できない問題。
こちらもいろんなサイトの情報を参考にして
rascutのhttpd.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'])
これで自動コンパイル後、ブラウザで自動更新されるようになりました。
もっと勉強します。