ActionScript やるなら入れとけ。rascut 導入と使い方。

ActionScript 3.0 でコマンドライン開発してる人は必携の rascut を導入してみた。Flex 開発や AIR 開発でも使えるよ。

rascut は id:secondlife さんによる fcwrap 後継バージョン。ファイル修正から自動的にプレビューまでできたり、trace() の出力をコンソールに出力してくれたり、かなり便利。

以前、勝手が分からずにかなり苦労したけど、最近、RubyForge にアップロードされてからは gem 一発で超簡単になったよ。

前準備

Flex SDK と fcsh を準備しましょう。fcsh にはパスを通しておきましょう。

インストール

手順は2つ。簡単だよ。Windows XP 向けだけど、Ruby が入っていれば他の OS でも 2. の手順だけでいけるはず。。

  1. One-Click Ruby 1.8.6-25 をインストール (ダウンロード)
  2. 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' で場所を指定するとよさげ。