Rails用 AMF
Rails用のAMF実装が出ていたので、使ってみました。
WebORB for Ruby on RailsというAMF実装が出ていたので、Flash+Railsで何か作ってみようと思いました。例えば、このブログの記事タイトルをFlashでアニメーションするようなやつ。
本家チュートリアルはFlexとの連携が主ですが、Flash Remotingでも行けるようです。かるーく触ってみたところ、かるーくは動きましたが、今のところ、(私が)未解決の問題があって出来上がっていません。
※2007/01/31追記:できました→WebORB for Rails+Flashデモ
中途ハンパですが、手順を書いておきます。
Rails自体のバージョン(1.1.4 or newer)もチェックしてください。
# gem update rails
# rails rails_app
# cd rails_app
# ruby script/plugin install \
http://themidnightcoders.net:8089/svn/weborb
適当なサービスクラスを作って /rails_app/app/services/ に配置。例えば、Blogから最新記事タイトルを取得するサービスを以下のように作ってみました。特になにも継承したりインポートしたりしなくてOKです。
def getRecent()
articles_recent = Article.find_by_sql "select id, title from articles ~"
articles_recent
end
end
config/にいろんな設定ファイル(XML)がありますが、アレはFlex用の設定ファイルなので、今回は無視。
まず、FlashRemotingをインストールします。
サービスコールのコードはこんな感じです。
import mx.rpc.*;
import mx.remoting.debug.NetDebug;
NetDebug.initialize();
//リモートサービスのアクティベイト
var rservice = new Service
("http://localhost:3000/weborb",null,'BlogService',null,null);
//コールバック
function handleError(fe:FaultEvent){
}
function handleResult(re:ResultEvent){
var rs = re.result;
for( var i = 0; i < rs.length; i++ ){
var row = rs[i];
trace(row['title']);
}
}
//サービスコール
var pc:PendingCall = rservice.getRecent();
pc.responder = new RelayResponder
(this, "handleResult", "handleError");
で、現在お見せできる結果は、↓このくらい ・・orz
■日本語が文字化け
全部UTF8に統一してやってるのですが、化けてしまいました。AMFPHPでは化けないことは確認しているので、WebORB側の問題???
■WebORBをインストールすると、他のappがまともに動かなくなる。このブログにインストールしてみたところ、ブログ自体が動作しなくなりました。WebORBをアンインストール(vendor/plugins/から削除)すると復活するので、これはWebORBが悪さをしているとしか思えない・・・
※2007/01/26追記:現時点でこの不具合は解消しているようです。
文字化けは直せそうな気がするけど、後者の不具合は、なんだろうな?? もう少し時間を置いて、また触ってみたいと思います。

