db2 on Rails
DB2でさくさく実現するRESTfulなDBアプリ(3)

FirebugでRESTfulなDBアプリに挑戦!!

日本アイ・ビー・エム株式会社
Team Ruby
野間 愛一郎
2009/1/5

JavaScript(Jester)でリソースに直接アクセスする

 使えば使うほど魅力的なRailsのライブラリに、JavaScriptからActiveRecordのようにデータベース操作が可能なJesterという便利なライブラリがあります。RESTで操作が行えるため、CRUD操作をHTTPのPOST、GET、PUT、DELETEのメソッドで実行できる、素晴らしいライブラリです。早速試してみましょう。

Jesterの準備

 セットアップはとても簡単です。2つのファイルをコピーし、レイアウトファイルを編集するだけです(今回は2つのファイルをコピーしますが、Jesterを使うにはjester.js、ObjTree.js、prototype.jsの3つのファイルが必要です。prototype.jsはRailsコマンドを使用してアプリケーションを作成した際のディレクトリに含まれていますので、コピーしていません。必要な場合はこちらのURL(http://prototypejs.org/)より入手してください)。

 なお、本稿執筆時点ではjester 1.5が最新ですが、ここではjester 1.3を使用しています(jester 1.5での動作確認はしていませんのでご留意ください)。また、ObjTree.jsについては、Jester 1.3のアーカイブに含まれるファイルを使用しても、下記リンク先にある最新のObjTree.jsのファイルを使用しても、どちらも問題ありません。

 以下のURLよりファイルをダウンロード・展開します。

 Jesterのアーカイブを展開したら、jester.jsと ObjTree.jsをC:\demo\public\javascriptsへコピーします。

レイアウトファイルの編集

 レイアウトファイル、C:\demo\app\views\layouts \movies.html.erbを編集し、Jesterを使う際に必要な3つのスクリプトファイルを追記します(サンプル2)。

サンプル2 レイアウトファイルにJester関連の記述を追加
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<script type="text/javascript" src="/javascripts/prototype.js"></script>
<script type="text/javascript" src="/javascripts/ObjTree.js"></script>
<script type="text/javascript" src="/javascripts/jester.js"></script>
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Movies: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
</head>
<body>

<p style="color: green"><%= flash[:notice] %></p>

<%= yield  %>

</body>
</html>

Webサーバの再起動

 Webサーバ(WEBrick)を再起動します(リスト7)。

リスト7 Webサーバの再起動
C:\demo>ruby script\server

 これで準備完了です。では再度Firebugを起動し、JavaScript環境、JesterをFirebug上で体験してみましょう。

modelクラスの宣言

 まずは使用するモデルを定義します。Firebugの「コンソール」ボタンをクリックし、最下部の入力コンソールにリスト8のように入力し、リターンキーをクリックします(図5)。

リスト8 モデル定義
Base.model("movie")

 モデル名の単数形movieと複数形moviesの変化は暗黙的に行えます。

図5 レイアウト表示



コラム3:JesterのJSONサポート

 Jesterは、本稿執筆時点での最新バージョン1.3からJSONをサポートしています。JSONとは、JavaScript Object Notationの略で、XMLなどと同様にテキストベースのデータフォーマットです。XMLのような冗長な表現がなく、簡潔に構造化されたデータを記述できる点が特徴です。Jesterを利用すると、JSONも簡単に利用できます。

 JSONを使うには、コントローラファイルの各種アクションにJSONフォーマットを追加します。 C:\demo\app\controllers\movies_controller.rbファイルを開き、リストAのようにJSONの記述を追加し、コントローラの設定を反映させるためにWebサーバを再起動します。

リストA コントローラファイルにJSONを追加
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @movies }
   format.json  { render :json => @movies }
    end
    

 最後にモデルをJSONフォーマットで宣言し、findします(リストB)。

リストB モデルの定義
  Base.model("movie",{format: "json"})
  c=movie.find(124)  

図 JSONデータの取得

前のページへ 3/5 次のページへ

Index
DB2でさくさく実現するRESTfulなDBアプリ(3)
FirebugでRESTfulなDBアプリ完全攻略!!
  Page 1
・Firebugを利用したデバッグ
・RESTの話をあらためて
 コラム1:Firebugの導入手順
・Rails環境の準備
  モデルの作成とデータベースへの反映|Webサーバの起動
  Page 2
・URIでCRUDを実現する
 コラム2:Webクエリを使用して、Excelからリソースへアクセスする
→ Page 3
JavaScript(Jester)でリソースに直接アクセスする
・Jesterの準備
  レイアウトファイルの編集|Webサーバの再起動|modelクラスの宣言
  コラム3:JesterのJSONサポート
  Page 4
 CRUDの実行1(Create)
 CRUDの実行2(Read)
  Page 5
  CRUDの実行3(Update)
   CRUDの実行4(Delete)

バックナンバー DB2でさくさく実現するRESTfulなDBアプリ



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間