|
Ruby on Railsではバージョン1.2からRESTがサポートされました。これはPUT・GET・DELETE・PUTによるHTTPリクエストによりRailsにアクセスすることができます。これを利用し、CurlとRailsとの連携サンプルを紹介します。
環境セットアップ
まずはMySQLをインストールし、以下のSQL文を実行することでテーブルとデータを作成します。
CREATE DATABASE dev; USE dev;
DROP TABLE employees; CREATE TABLE employees ( id INT auto_increment NOT NULL, login CHAR(16), firstname CHAR(32), lastname CHAR(32), phone CHAR(15), status INT, PRIMARY KEY (id) ); INSERT INTO employees VALUES(default,'hmino','Hiroki','Mino','0123-45-6789',1); INSERT INTO employees VALUES(default,'mishikawa','Masaki','Ishikawa','03-1234-1234',0); INSERT INTO employees VALUES(default,'hokada','Hitoshi','Okada','00-0000-0000',1); INSERT INTO employees VALUES(default,'tyamamoto','Takeshi','Yamamoto','090-0909-0909',1); INSERT INTO employees VALUES(default,'amori','Akira','Mori','111-111-111',0);
次にRubyとRails2.0をインストールします。Rubyはワンクリックインストーラで簡単にインストールできます。(http://www.rubyonrails.org/)その後、以下のコマンドを実行し、Railsをインストールします。
インストールに成功しましたら、”rails demo”コマンドによりdemoディレクトリを作成します。
demoディレクトリが作成されましたら、その配下のディレクトリにあるconfig/database.ymlファイルを開き、データベースの設定を行います。例えば以下のような設定にします。
development: adapter: mysql database: dev username: user1 password: pass1 host: localhost
さらに以下のコマンドを実行しますと簡単なRailsアプリケーションが出来上がります。
| > ruby script/generate scaffold Employee |
最後にWebサーバ(WEBrick)を起動します。これは3000ポートで立ち上がります。
ブラウザで以下のURLを開き、稼動確認ができます。 http://localhost:3000/employees/

また、RESTで稼動確認するためには以下のURLを開きます。 http://localhost:3000/employees.xml

CurlからRuby on Railsにアクセス
Railsでは以下のようなHTTPアクセスでCRUD(Create/Read/Update/Delete)を実現できるようです。
| 一覧表示 |
GET |
/employees.xml |
| 1件表示 |
GET |
/employees/1.xml or 2.xml .... |
| 新規作成 |
POST |
/employees |
| 更新 |
PUT |
/employees/1 |
| 削除 |
DELETE |
/employees/1 |
※Curl6.0では、PUT、DELETEメソッドがサポートされていませんので、サンプルプログラム内ではGETやPOSTにて代用しています。(将来的にはサポートされる予定です。)
そこで、簡単にアクセスできるレコードセットRailsRecordSetをサンプルとして作成してみましたので、それを用いて連携させてみることとします。まずはRailsRecordSetクラスの入っているパッケージCOM.CURLAP.EXAMPLES.RAILSをimportします。次にRailsRecordSetを引数にRailsサーバのパス・エンティティ名・RecordFieldsを指定して生成します。
|
{import * from COM.CURLAP.EXAMPLES.RAILS, location = "rails/load.scurl" }
{value let record-set:RecordSet = {RailsRecordSet "http://localhost:3000", || rails server "employee", || entity name {RecordFields {RecordField "id", domain = int}, {RecordField "login", domain = String}, {RecordField "firstname", domain = String}, {RecordField "lastname", domain = String}, {RecordField "phone", domain = String}, {RecordField "status", domain = String} } }
|
この生成したRailsRecordSetをRecordGridコントロールに紐付けることにより、簡単に画面表示させることができます。
|
{RecordGrid record-source = record-set, alternate-row-background = "#ccffff" },
|

また、RecordGrid内でのレコード追加・修正後、commitボタンを押下することにより、データベースへの更新を行うこともできます。
コードサンプルのダウンロード
Ruby on Rails連携サンプル
|