--- layout: old_post title: Jester-RESTfullなRails向けJavaScriptライブラリ permalink: /tatsuya/show/301-jester-restfull-rails-javascript ---

JesterとFireBugs

RESTfullなRailsのためのJavaScriptライブラリ Jester がヤバイ、素敵すぎる。

:: GIANT ROBOTS SMASHING INTO OTHER GIANT ROBOTS :: Jester: JavaScriptian REST

上のサイトを見てもらえば一目瞭然だけど、RESTfullなRails WEBサービスへシームレスにアクセスできている。
例えば、以下のような流れを試すと分かり易い

ruby script/generate scaffold_resource Book title:string review:text
//titleとreviewを持ったBookというリソースがあるとして
rake migrate
ruby script/server start
//Rails側準備完了

//以下JavaScript環境、JesterをFireBugs上でテスト
>>> Base.model("Book","http://localhost:3000","book","books")
>>> ruby = Book.create({title: "オブジェクト指向スクリプト言語Ruby", review: "巻末の用語集が面白い"})
POST http://localhost:3000/books.xml (400ms)prototype.js (line 866)
>>> ruby.id
5
>>> delete ruby
true

>>> ruby = Book.find(5)
GET http://localhost:3000/books/6.xml (146ms)prototype.js (line 866)

<?xml version="1.0" encoding="UTF-8"?>
<book>
 <id type="integer">6</id>
 <review>巻末の用語集が面白いだよ</review>
 <title>オブジェクト指向スクリプト言語Ruby</title>
</book>

>>> ruby.title
"オブジェクト指向スクリプト言語Ruby"
>>> ruby.review
"巻末の用語集が面白いだよ"
>>> ruby.title = "オブジェクト指向スクリプト言語Ruby アスキー出版"
"オブジェクト指向スクリプト言語Ruby アスキー出版"
>>> ruby.save()
POST http://localhost:3000/books/5.xml (147ms)prototype.js (line 866)
>>> delete ruby
true

>>> ruby = Book.find(5)
GET http://localhost:3000/books/5.xml (411ms)prototype.js (line 866)
>>> ruby.title
"オブジェクト指向スクリプト言語Ruby アスキー出版"

のように、まるで本当のActiveRecordみたいにスマートだ。ActiveRecordがRubyオブジェクトをSQLへ変換してDBへ投げるように、JesterがJavaScriptオブジェクトをXMLに変換してRailsへ投げている。しびれる

是非一度 FireBugs辺りで触って試して欲しい、サーバ側はもちろん scaffold_resouce で作ったRailsで。ちなみに Jester.js のソースを見ると300行くらいで非常にシンプル & 軽量、短いし一度読んでみようかな、機能追加も楽にできそうだ。

まとめを追記した