ActionScript やるなら入れとけ。rascut 導入と使い方。
ActionScript 3.0 でコマンドライン開発してる人は必携の rascut を導入してみた。Flex 開発や AIR 開発でも使えるよ。
rascut は id:secondlife さんによる fcwrap 後継バージョン。ファイル修正から自動的にプレビューまでできたり、trace() の出力をコンソールに出力してくれたり、かなり便利。
以前、勝手が分からずにかなり苦労したけど、最近、RubyForge にアップロードされてからは gem 一発で超簡単になったよ。
前準備
Flex SDK と fcsh を準備しましょう。fcsh にはパスを通しておきましょう。
- Flex SDK については ActionScript 3.0メモ さんを参照あれ。
- fcsh については fcsh で Apollo を高速コンパイル(参考リンク集のおまけ付き) あたりを参照あれ。Flex 3.0 SDK には fcsh が付属してるので、改めて導入する必要はなし。
インストール
手順は2つ。簡単だよ。Windows XP 向けだけど、Ruby が入っていれば他の OS でも 2. の手順だけでいけるはず。。
- One-Click Ruby 1.8.6-25 をインストール (ダウンロード)
- gem install rascut --include-dependencies を実行。
>gem install rascut --include-dependencies Bulk updating Gem source index for: http://gems.rubyforge.org Select which gem to install for your platform (i386-mswin32) 1. mongrel 1.0.1 (mswin32) 2. mongrel 1.0.1 (ruby) 3. mongrel 1.0 (mswin32) 4. mongrel 1.0 (ruby) 5. Skip this gem 6. Cancel installation > 1 Successfully installed rascut-0.1.1 Successfully installed mongrel-1.0.1-mswin32
これで終わり。
(追記 2008.3.4) Flex 3 SDK 対策用パッチ
Flex 3 SDK の場合、fcsh が日本語化されているため、Rascut 0.1.3 では動作しません。
環境変数 _JAVA_OPTIONS に -Duser.language=en と設定するとうまく動くようです。Windows+コマンドプロンプトにて
set _JAVA_OPTIONS=-Duser.language=en
としておくことで動作することを確認しました。
恒久的に対策するには rascutとFlex3 SDK beta - holidays-l開発ブログ を参照して、ソースコードを修正しておくとよいでしょう。
ファイルの監視用パッチ
Rascut 0.1.1+Windows XP + Ruby 1.8.6-25 ではファイルの監視がうまくいかなかったので http://d.hatena.ne.jp/ameema/20070902/1188735855 を参考に、C:\ruby\lib\ruby\gems\1.8\gems\rascut-0.1.1\lib\rascut\file_observer.rb を修正した。
修正前
dir = Pathname.new(file) @dirs[dir] ||= dir.mtime
修正後
dir = Pathname.new(file) #@dirs[dir] ||= dir.mtime @dirs[dir] ||= Time.at(0)
簡単な使い方
コンパイル
rascut のあとにファイル名を指定する。
rascut Test.as
ファイルが更新されたら再コンパイルしてくれる。しかも、fcsh を使うので、2回目以降は高速。
これだけでもかなりうれしい。
サーバーモード
'-s' でサーバーモード。
rascut Test.as -s
http://localhost:3001/ につなげば、SWF がパブリッシュされるたびに自動的にブラウザがリロードしてくれる。IE だとたまにリロードされないことがあるので、Firefox を使ったほうがよさそう。
ファイル保存→ビルド→プレビューまでが自動で進む。一度味わうと離れられません。
ポート番号は -p で指定できる。ぶつかる人は設定すべし。
ディレクトリ公開
サーバーモードでディレクトリを公開すると、外部ファイルの読み込みが便利。
rascut Test.as -m "../assets/=assets" -m "../images/=img"
上の例は、Test.as の1つ上の階層にある assets フォルダと images フォルダを、それぞれ http://localhost:3001/assets/ と http://localhost:3001/images/ に割り当てられる。
'-use-network=false' してローカルで試験する必要がなくなるのが素敵。
コンパイルオプション指定
'-c' で mxmlc に渡すコンパイルオプションを指定できる。
rascut Test.as -c "-verbose-stacktraces=true -benchmark"
-c "+configname=air" で air にも対応できると思うよ。
trace() をコンソール出力
-l+ログファイル名でコンソールに trace() の結果が吐き出される。
rascut Test.as -l "C:\Documents and Settings\nitoyon\Application Data\Macromedia\Flash Player\Logs\flashlog.txt"
trace() を吐かせる方法は カサヒラボ - windowsやmacで、flashのtraceログが吐かれる場所 が詳しいので知らない人はそちらを参考に。
毎回指定するのが面倒なので、(Windows の人は)C:\ruby\rascat.cmd にて
@ruby "c:/ruby/bin/rascut" %*
を
@ruby "c:/ruby/bin/rascut" %* -l "C:\Documents and Settings\nitoyon\Application Data\Macromedia\Flash Player\Logs\flashlog.txt"
としておくと幸せに。
1つ問題が。Windows+コマンドプロンプトでは日本語が化ける。ちょっと悲しいので人生初 Ruby で場当たり対処してみた。
「Ruby 文字コード」でぐぐったら kconv というのを使うとよさそうだったので、C:\ruby\lib\ruby\gems\1.8\gems\rascut-0.1.1\lib\rascut\command.rb を書き換えた。
修正前:
logger.info("FLASHLOG\n" + text) unless text.strip.empty?
修正後:
logger.info("FLASHLOG\n" + Kconv.tosjis(text)) unless text.strip.empty?
冒頭に require 'kconv' を入れるのも忘れずに。
これで日本語OKアルヨ。
将来的には rascut 本体に出力文字コードを指定できるオプションがつけばうれしい!
その他のオプション
'--help' でヘルプがでる。
>rascut --help Usage: $ rascut HelloWrold.as -b, --bind-address=VAL server bind address(default 0.0.0.0) -c, --compile-config=VAL mxmlc compile config ex:) --compile-config="-benchmark -strict=true" --fcsh-cmd=VAL fcsh command path -I, --observe-files=VAL observe files and directories path -i, --interval=VAL interval time(min) -l, --log=VAL showing flashlog.txt -m, --mapping=VAL server mapping path :example) -m "../assets=assets" -m "../images/=img" --no-file-observe don't observing files --observe-ext=VAL observe ext ex:) --observe-ext="as3,actionscript3,css,mxml" -s, --server start autoreload webserver --server-handler=val set server hander :example) --server-handler=webrick -p, --port=val server port(default: 3001) --plugin=VAL load plugin(s) -t, --template=VAL server use template file -v, --verbose detail messages --help show this message
'-v' は覚えておいたほうがよいかも。
異なるバージョンの Flex SDK(fcsh) を使い分けるには '--fcsh-cmd' で場所を指定するとよさげ。