cgictrl-0.4(CGI framework for Ruby)


English?

Copyright (C) 2009 Masahiko Ito

These programs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

These programs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with these programs; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Mail suggestions and bug reports for these programs to "Masahiko Ito" <m-ito@myh.no-ip.org>

Download

これは何?

ruby言語を使ってWebアプリケーションを作る時に利用するフレームワークの 一種です。

機能とか特徴とか

rubyのフレームワークと言えば `Ruby on Rails' とかが真っ先に思い浮かぶ と思うのですが、この `cgictrl' の方向性は、それらとはかなり違ったもの ですし、競合するようなものでもありません(まぁ、最初から相手にされない とは思いますが...)。

一言で言うと、cgictrlはメインフレームでのオンラインプログラムの構造を Webアプリケーションの世界に適用する為のフレームワークという事になりま す。

NEC ACOS-4でのVIS環境、日立 VOS-3でのADM環境(富士通でのAIM、IBMでの CICSかな?)辺りでのオンラインプログラム構造を思い浮かべていただければ 良いかと思います。

プログラムはトランザクションコードで識別され、プログラムから次に起動す るトランザクションコードを指定する事で会話処理を継続して行きます。

基本的に一つのプログラムは、一種類の画面を送信し、その画面からの入力デー タを処理することに専念します。また、あるプログラムから次のプログラムへ のデータ引き渡しはSPA(Scratch Pad Area)と呼ばれる特別の領域(これはセッ ションごとに確保される)にそのデータを保存する事で実現します。

機能としては、

等を備えています。

インストール方法

使い方

設定ファイル

制御CGIプログラム

~/cgictrl/resource.txtの設定

書式 : リソースID=リソース実体名称
  例 : RES1=/home/m-ito/dat/database.txt
排他制御の対象リソースを登録する。cgictrlではあらかじめ登録されたリ ソースのみ排他制御の対象にできる。cgictrlはリソースIDでのみリソース を識別する。cgictrlにとってリソース実体名称は特段意味を持たない。よっ てリソース実体名称は必ずしも実体を表す必要はない(ただし以下の特殊な リソースIDを除く)。

特殊なリソースID (cgictrl内部で利用するので、ユーザのリソースIDと して利用してはいけない)

`LOGFILE' はアクセスログファイルを示し、このリソースIDに対する実体 名称は実際にhttpデーモンの権限で書き込み可能なファイルである必要が 有る。ただし、resource.txt中で指定されない場合は cgictrl_common.rb 中のinitializeメソッドにハードコーディングされたログファイルが出力 先となるので、一時的に出力先を変更したい等の特別な事情がなければ、 あえてresource.txt中で指定する必要は無い。

`SPADIR' はSPAを格納するディレクトリを示し、このリソースIDに対する 実体名称は実際にhttpデーモンの権限で書き込み可能なディレクトリであ る必要が有る。ただし、resource.txt中で指定されない場合は cgictrl_common.rb 中のinitializeメソッドにハードコーディングされた SPAディレクトリが設定されるので、一時的にSPAの出力先を変更したい等 の特別な事情がなければ、あえてresource.txt中で指定する必要は無い。

~/cgictrl/tran2pgm.txtの設定

書式 : トランザクション名=プログラムへのパス[:リソースID/アクセスモード[,リソースID/アクセスモード ...]]
  例 : SAMPLE1=/home/m-ito/public_html/RubyFrameWork/cgi-bin/sample1.cgi:RES1/A,RES2/G,RES3/A
トランザクションに対応するプログラム実体と排他処理の対象とするリソー スIDを登録する。ここで記述するリソースIDは ~/cgictrl/resource.txt に 登録された物でないといけない。

アクセスモードは現時点ではコメントに過ぎない(常にAの更新モード扱いとなる)。 将来的にはgrmdと連係させて

の2種類が指定可能となる予定(?)。

~/cgictrl/usertran.txtの設定

書式 : ユーザ名=許可トランザクション(正規表現)
  例 : m-ito=TEST|SAMP_.*
httpサーバの認証機能(Basic認証等)により認証されたユーザIDに対して 許可するトランザクションを登録する。

認証機能を利用しない場合、ユーザIDには `anonymous' が設定されるの で、許可するトランザクションは `anonymous' に対して設定する。

cgictrl_common.cgiでの各種既定値定義。

サイトごとに必ず設定を見直すべき項目

サイトの方針により設定を見直すべき項目

既定値のまま運用する事が望ましい項目

起動方法

パラメータ `SYS_init_tran' に初期トランザクションを指定し、 cgictrl.cgiを呼び出す。
  例 : http://foo.org/cgi-bin/cgictrl.cgi?SYS_init_tran=トランザクション名

画面定義(html)作成

画面のデザインはhtml(的な)ファイルとして作成しプログラムから直接htmlタグ を出力する事はしない(推奨)。格納場所は ~/cgictrl/html/ とする。

通常のhtmlファイルと異なる部分は、

ユーザプログラム作成

サンプルスクリプトを参考に作成する。基本的には
  #--- user coding start ---
  #--- user coding end   ---
  
の間にコーディングを行う。 原則、それ以外の場所はさわる必要が無いが、どうしてもさわる場合はロジック を良く理解した上で自己責任で行う事。

Cgictrl classに定義されている(主にユーザプログラムで使用する)メソッド

サンプル

cgictrlを利用した会話処理のサンプルを示します。処理内容は、数値データ(半径)を入力 して、入力チェックを行った後に、その円の面積と球の体積を表示します。入力を受け付 けて入力チェックを行うCGI(トランザクション)と計算結果を表示するCGI(トランザクショ ン) に分かれています。

最後に

このソフトウェアが、汎用機での貴重な開発経験を持ちながら、ウェブアプリケー ションの開発現場で苦労されている開発者方の手助けとなれば幸いです。
m-ito@myh.no-ip.org

[更新]