吉田裕美 [著] 2009/07/21 15:00

サンプルソース 5.57 KB

 RailsにはScaffoldという簡単なアプリを自動生成するジェネレータがありますが、Scaffoldはデフォルトで用意されているものだけでなく自作することも可能です。今回は前回作成したCRUDアプリを自動生成するScaffoldを自作します。

1 2 3 4 5 →

はじめに

 実用的なWebアプリを作ると、同じような画面がたくさん必要になってきます。特にバックエンド側の管理画面は、テーブルに対するCRUD機能を少しだけ拡張したような画面がたくさん必要になります。

 このような場合にRuby on RailsのScaffold機能はとても有用です。たしかにRuby on Railsが最初から用意しているScaffoldが作るアプリでは、機能が足りなかったり冗長だったりします。しかし、RailsではScaffoldのようなコードジェネレータを簡単に自作できる仕組みを持っています。

 今回はこの機能を使って、前回作ったリッチクライアント版のCRUDアプリを作るcurl_scaffoldを作っていきます。これはテーブル定義を与えると、Scaffoldのようにアプリケーションのコードを生成するプログラムです。

これまでの記事

  1. Railsの表示にCurlを使ってRIAを構築する
  2. リッチクライアントCRUDアプリを作成する

サンプルソースについて

 こちらよりサンプルソースをダウンロードできます。なお、サンプルソース実行にあたってはライセンスファイル「curl-license-5.dat」が必要になります。Curl IDEなどに含まれていますので、コピーして使用してください。

curl_scaffoldのイメージ

 今回作るcurl_scaffoldを実行した際の流れは、次のようなイメージです。

1

 Ruby on RailsのScaffoldでアプリを作るのと同じように、まずrailsコマンドでプロジェクトを作ります。

% rails alih
% cd alih
2

 script/generateコマンドでcurl_scaffoldジェネレーターを使ってアプリケーションのひな形を生成します。その際、scaffoldと同様にモデル名、RDBテーブルのカラム情報を指定します。

% ruby script/generate curl_scaffold player name:string team:string no:integer goal:integer assist:integer
3

 rakeコマンドでDBを作成、サーバを起動します。

% rake db:migrate
% ruby script/server
4

 ブラウザで http://localhost:3000/players/start をアクセスすると前回と同じようなCurlの画面が表示されます。

 もちろん、上の手順で作ったアプリにはデータがありません。前回のplayers.ymlファイルをtest/fixturesディレクトリにコピーし、以下のコマンドを実行することで前回同様のデータが入ります。

% rake db:fixtures:load

プロフィール
吉田裕美 ヨシダユウミ

有限会社 EY-Office 取締役
CADのベンチャー企業でCADのコア部分や図面管理システムなどの開発に従事した後、独立しJava,Ruby,PerlでWebアプリを中心に開発してきた。現在は殆どの開発はRuby on Rails。
ここ数年はソフトウェアエンジニアの教育に興味をもち、従来の知識偏重な教育ではなく現実の問題を解決できるエンジニアを育てる教育に注力している。
またLisp等に関心がありWebメディアでいくつか記事を書いている。
ブログ: http://d.hatena.ne.jp/yuum3/


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト