CHANGES.ja

Path: CHANGES.ja
Last Update: Fri Jan 07 23:20:39 JST 2005

2.0.0 preview 1

主な変更

  • コンポーネントをステートフルに扱えるようになった。
  • サブコンポーネント(ネストしたコンポーネント)との通信が可能になった。
  • コンポーネントごとにディレクトリを作る必要がなくなった。
  • テンプレートファイルでのエレメント定義を、 <CGIKIT> タグを使う方法から HTML属性を使う方法に変更。
  • バインディングファイルをRubyスクリプトに変更。
  • APIを大幅に刷新。
  • 1.x の .ckd ファイルを 2.x 用に変換する ckdold2new を misc に追加。

エレメントに関する変更

サンプル

  • これまでのサンプルをすべて削除し、HelloWorld, CKWiki, Calcを追加。

1.2.1

  • バインディングファイルに記述した配列とハッシュをパースできない問題を修正。

1.2.0 (2004/4/15)

Ruby 1.8.0以降のみサポート。

新機能

  • CKTextとCKTextFieldの入力値の検証ができるようになった。
  • WEBrickアダプタとTemplateアダプタを追加。 Templateアダプタは標準出力にHTMLを出力せず、 CKApplication#run()の戻り値にレスポンスオブジェクトを返す。

エレメントに関する変更

  • エレメントにHTMLの任意の属性を追加できるよう変更。
  • エレメント定義ファイルの文法を、行末のセミコロンを省略できるよう変更。
  • エレメント定義名が重複したとき、例外を発生するよう変更。
  • エレメントの未定義属性チェックをなくした。
  • CKFormのaction属性を削除。

APIの追加と変更

  • セッションをチェックする処理をリファクタリング。
  • CKErrorPageをデフォルトでロードするよう変更。
  • CKStringScannerクラスを削除。
  • CKRepetitionのitem属性の変数をセットするとき、 Enumerable#each_with_indexを使うように変更
  • CKApplication#clear_session()でセッションを削除後、 セッションIDとセッションをnilにするよう変更。
  • クッキーをレスポンスヘッダの先頭に含めるよう変更。

修正点

  • コンポーネントで、フォームデータを変数にセットする順序がばらばらである問題を修正。
  • セッションのタイムアウトを0に設定しても無期限にならない問題を修正。
  • URL、クッキーの両方にセッションIDを埋め込まないことができる問題を修正。
  • セッションを使用中にCKRepetition内のCKCheckboxがうまく動作しない問題を修正。
  • セッションの認証が正しく行われていない問題を修正。
  • ログオプションのmax_file_sizeを設定している時、 ログファイルが存在しなければエラーが発生する問題を修正。
  • CKGenericElementのenabled属性がfalseにならない問題を修正。
  • CKTextFieldのvalue属性値がエスケープされない問題を修正。

1.1.0 (2003/11/4)

新機能

  • ruby 1.8.0に対応。
  • 画像ファイルなどのリソースを扱うクラスCKResourceManagerを追加。
  • セッションIDの記録に使用するクッキーの制限時間を指定できるようになった。 CKApplicationのsession_cookie_expire属性で設定する。
  • エレメントで使用する属性のアクセサを定義する必要がなくなった。 アクセサを定義しない場合は、インスタンス変数を直接使用する。
  • CGIとmod_rubyのアダプタを自動的に判断するようになった。
  • るびきちさんによるEmacs用のCGIKit開発ツール cgikit.el を添付。

エレメントに関する変更

  • CKTextFieldにmaxlength属性を追加。
  • CKImageにheight, width, data, mimeの属性を追加。
  • CKFormにfileupload属性を追加。
  • CKFormでマルチパートデータを送信するとき、 アップロードするファイル以外のデータをStringにするよう変更。

APIの追加と変更

  • HTMLファイルのパースエラーのとき、ファイル名を表示するよう変更。
  • ログをファイルに出力するよう設定されているとき、 CGIKitで補足できるエラーをファイルに出力するよう変更。
  • CKKeyValueCodingモジュールを追加。
  • CKUtilitiesクラスをモジュールに変更。
  • 以下のフックメソッドを追加。
    CKComponent#post_action:アクションが実行された後のタイミングで呼ばれる。
  • 以下のメソッドを変更。

    メソッド名の変更

    CKApplication#pre_run:-> pre_action
    CKComponent#pre_run:-> pre_action

修正点

  • CKBrowserのescape属性が常にtrueになってしまう問題を修正。
  • CKTextのvalue属性の値を出力するときにHTML制御文字をエスケープするように修正。
  • 文字コードの設定をしているとき、CKFileUploadを使うとエラーになる問題を修正。
  • エラーページ表示時、ファイルパスにピリオドの含まれるディレクトリがあると アプリケーション名が正しく表示されない問題を修正。

1.0.1 (2003/7/22)

APIの追加と変更

  • フックメソッドCKApplication#pre_run()を追加。 このメソッドはリクエストオブジェクトとセッションオブジェクトの設定後、 コンポーネントが生成される前に呼ばれる。

修正点

  • CKPopUpButtonのvalues属性が使用できない問題を修正。
  • CKResponseオブジェクトにContent-Dispositionヘッダを設定できるよう修正。

1.0.0 (2003/7/15)

正式リリース。 ライセンスをGPLライセンスからRubyライセンスに変更。

実験的機能

  • mod_rubyに対応。

新機能

  • CKBrowser, CKPopUpButtonにvalues属性を追加。
  • CKLogのロギング機能を強化。
  • フォームデータの文字コードを指定できるようになった。 ただし、デフォルトでは日本語の文字コードのみ。
  • ブラウザの言語設定からロケールを自動的に判断するようになった。

APIの追加と変更

  • <CGIKIT>タグのコメント記法を追加。
  • CKAdapter::ModRubyを追加。
  • CKBrowserのdefault属性を削除。
  • HTML 4.01の仕様に従ってCKCheckboxのvalue属性の内容を常に表示するよう変更。
  • CKComponentにsession()を追加。CKApplication#sessionへのエイリアスメソッド。
  • CKCookie#newを、すべての属性の引数をとるように変更。
  • CKFileLock#exclusive_lockとshared_lockを、open()の引数を取るように変更。
  • 正しくないセッションクリアをすると例外CKErrorを発生するように変更。 自動管理時はCKSession#clear、手動管理時はCKApplication#clear_sessionを使う。
  • 存在しないセッションIDでアクセスすると例外SessionTimeoutErrorを発生するように変更。
  • CKRequestにlanguages()を追加。優先する言語設定の配列を返す。
  • 以下のフックメソッドを追加。
    CKApplication#pre_respond:ブラウザにHTTPレスポンスを送る直前に呼ばれる。
    CKComponent#post_run:フォームデータをインスタンス変数に設定し、 アクションを実行した後に呼ばれる。
    CKComponent#convert_char_code:フォームデータをコンポーネントのインスタンス変数に 設定する直前に呼ばれる。 このメソッドで文字コード変換を行う。
  • 以下のクラス・メソッドを変更。

    クラスの削除

    CKLock

    メソッドの移動

    CKUtilities.parse_query_string:-> CKRequest.parse_query_string
    CKUtilities.parse_cookie:-> CKCookie.parse_raw_cookie

    メソッドの削除

    CKApp#debug

修正点

  • 警告が出ないように修正。
  • クッキーをセッションの自動管理に使っているときに起こる無限ループを修正。
  • CKByteData#write_to_fileが動作しない問題を修正。
  • CKString#emptyが動作しない問題を修正。
  • エレメントのenabled属性が表示される問題を修正。
  • エレメントの属性に関するエラーが起きたときにエラーページが表示されない問題を修正。

サンプル

  • mod_ruby用のサンプルHelloWorldModRubyを追加。
  • Examplesを日本語に対応させた。
  • ErrorScreenにロギング機能のサンプルを追加。

1.0b7 (2003/4/17)

最終ベータ版。

新機能

  • ファイルをアップロードするエレメントCKFileUploadと HTMLタグを生成するエレメントCKGenericElementを追加。
  • CKRepetition内でフォームエレメントを使用可能になった。
  • バインディングファイルで配列・ハッシュリテラルを使用可能になった。
  • サンプルに"FileUpload","AddressBook"を追加。 また、"Examples"に"RepetitionTablePage"と"GeneratingElementPage"を追加。

APIの追加と変更

  • CKHyperlinkとフォームエレメントのdisabled属性をenabled属性に変更。 enabled属性はtrueのときにエレメントが有効になり、falseのときに無効になる。
  • CKFormにmethod属性を追加。
  • CKResetButtonにenabled属性を追加。
  • バイト列クラスCKByteDataを追加。
  • エレメントIDクラスCKElementIDを追加。表示するコンポーネントや 起動するアクションはエレメントIDで管理される。
  • エレメント属性を扱うモジュールCKElement::ElementAttributeを追加。 このモジュールはエレメントの属性をチェックし、 HTMLタグを出力するすべてのエレメントにHTML共通属性を追加する。
  • エレメントの状態を扱うモジュールCKElemenet::ElementStateを追加。 CKConditionalにて属性の状態を管理する。
  • CKApplicationにセッションエラーを捕捉するフックhandle_session_error()を追加。
  • セッションデータベースを管理するクラスCKSessionStoreを追加。
  • 未実装のままだったマルチパートの処理を実装。
  • コンポーネントのアクセサを検索する仕様を削除。
  • CKAdapter#run()の引数にHTTPリクエスト、レスポンスオブジェクトをとるよう変更。
  • CKComponentにtemplate_file(), definition_string(), definition_file(), variable?()を追加。
  • 以下のクラス・メソッドを変更。

    メソッド名の変更

    CKApplication#attributes_check:-> check_attributes
    CKElement#init_element:-> init
    CKElement#oid:-> element_id
    CKComponent#html_string:-> template_string
    CKRequest#single_param:-> form_value
    CKRequest#multiple_params:-> form_values
    CKResponse#send_redirect:-> set_redirect

    メソッドの移動

    CKElement.parse_ckd_value:-> CKComponent#parse_ckd_value
    CKBinding.bind:-> CKComponent#bind
    CKSession#save:-> CKApplication#save_session
    CKSession#restore:-> CKApplication#restore_session
    CKSession#clear:-> CKApplication#clear_session
    CKURL#url:-> CKApplication#url

    クラスの移動

    CKAdaptee::CGI:-> CKAdapter::CGI
    CKSession::SessionTimeoutError:-> CKApplication::SessionTimeoutError
    CKSession::SessionAuthorizationError:-> CKApplication::SessionAuthorizationError

    クラスの削除

    CKURL, CKAdaptee, CKBinding

修正点

  • URL中で使用するクエリー文字列の区切り文字を’;’に変更。
  • CKApplicationのdebug属性のデフォルト値をtrueに変更。
  • CKErrorPageのHTMLを一部修正。
  • CKHyperlinkのstring属性に数字を設定できない問題を修正。
  • CKHyperlinkで囲んだ<CGIKIT>要素を展開するように修正。
  • CKRepetitionにて、list属性とcount属性が同時に作用するのを修正。
  • CKStringのescape属性にfalseが設定できない問題を修正。
  • CKTextのcolumns属性のスペルミスを修正。

1.0b6 (2003/2/22)

新機能

  • セッション管理を導入。
  • パーザの再実装により、パフォーマンスが向上した。
  • サンプルに"SessionTest"を追加。

新規API

  • CKFormにquery属性を追加。
  • CKApplicationにerror_page属性を追加。
  • CKMessageにhttp_version_line()を追加。
  • CKResponesにstatus_line()を追加。
  • CKResponseに、指定のURLにリダイレクトするsend_redirect()を追加。

修正点

  • 自動生成するフォームのname属性の命名規則を変更。
  • CKApplication#handle_error()の戻り値をCKComponentに変更。
  • CKResponseのstatus属性のデフォルトをステータスコード200(OK)に変更。
  • CKResponseのstatus属性の型をStringからIntegerに修正。
  • CKUtilities#escape_html()をシングルクォーテーションもエスケープするように修正。
  • CKHyperlinkにて、disabled属性がtrueのときstring属性が無視される問題を修正。
  • CKImageにて、画像ファイルを検索するときにリソースディレクトリを 再帰的にたどるように変更。
  • CKPopUpButtonとCKBrowserのescape属性のデフォルトをtrueに変更。
  • CKPopUpButtonのselection属性の名前をselectedに戻した。
  • CKPopUpButton,CKBrowser,CKRepetitionにて、 list属性がnilのときエラーになる問題を修正。
  • CKBrowserにて、escape属性が動かない問題を修正。
  • CKRadioButtonにて、エレメントの定義名とname属性が異なるとき動かない問題を修正。
  • CKURL#url()を、URLにセッションIDと任意のクエリ文字列を追加するよう変更。

1.0b5 (2002/12/13)

新機能

  • RDocドキュメントを整備。
  • エラーページを導入。プログラム中に例外が発生すると エラー原因とスタックトレースを表示する。
  • 拡張エレメント、拡張コンポーネントのためのディレクトリを用意した。 このディレクトリにあるファイルはエレメント(コンポーネント)生成時に 検索されるので、requireする必要がない。
    $LOAD_PATH/cgikit/elements:拡張エレメント
    $LOAD_PATH/cgikit/components:拡張コンポーネント
  • エレメントの属性をチェックするようにした。属性チェックを回避するには、 CKApplication#attributes_checkをfalseにする。
  • 今まで分割していたファイルを1つに統合。 Ruby 1.6系において、分割時よりもパフォーマンスが多少上がる。
  • サンプルに"ErrorScreen"を追加。

新規API

  • コンポーネントを部品として扱うクラスCKPartsMakerを導入。 コンポーネントクラスにてCKPartsMakerをインクルードすると、 そのコンポーネントに直接アクセスできないようにする。
  • ロギングクラスCKLogの追加。
  • ファイルロッククラスCKFileLockの追加。
  • CKRequestにパラメータ取得とクッキー取得のメソッドを追加。
  • CKApplicationにpage()を追加。
  • CKComponentとCKMessageにadd_cookie()を追加。

修正点

  • CKBrowserとCKPopUpButtonのitem属性を削除。
  • エラーページのクラス名をCKExceptionPageからCKErrorPageに変更。
  • CKConditionalにて、内容を表示するしないに関わらずHTMLを解析する問題を修正。
  • CKPopUpButtonのselected属性の名前をselectionに変更。
  • CKStringにて、escape属性がtrueのときにvalue属性がnilだとエラーになる問題を修正。
  • CKRequest#fromの戻り値をHTTPヘッダー"HTTP_FROM’に修正。
  • CKFormのenctype属性に"POST,GET,HEAD"以外の値を入れると、自動的にPOSTになるよう修正。
  • CKCookieManagerクラスを削除。
  • CKURL#url()にて、クエリ文字列に追加する属性 "master_locale" のキー名を修正。

1.0b4 (2002/10/17)

バグ修正とコードのリファクタリング。

  • コンポーネントを読み込むパスをCKApplication#pathからCKApplication#component_pathに変更。
  • コンポーネントのインスタンス変数を文字列化するCKURL#_parseを削除。 これに伴い、CKComponent#fetch、_fetch_from_requestも削除した。
  • HTMLパーザが繰り返し解析をするとき、文字列の一部がカットされてしまう問題を修正。
  • CKCheckboxにvalue属性が設定されていなくてもHTML表示時にvalue属性を表示するのを修正。
  • CKApplication#baseurl(旧application)を設定しなくてもCKFormが動作するよう修正。 設定されていないと環境変数SCRIPT_NAMEをフォームのaction属性に使う。
  • CKTextのvalue属性が反映されない問題を修正。
  • CKImageの画像検索パスにCKApplication#baseurlを追加。 CKApplication#resourceが設定されていないときに参照される。
  • CKStringのescape属性にtrueを設定しても反映されない問題を修正。
  • CKApplicationにオブジェクト属性を追加。
    path:ファイルシステム上のプログラムのパス。
    component_path:コンポーネントのあるディレクトリ。
    baseurl:Webサーバのドキュメントルートから見たURL (application属性から名称を変更)。
    name:拡張子を除いたプログラム名。
  • バインディングファイルにて、’’でも文字列になるよう変更。
  • バインディンクファイルにてコメントを可能にした。 #から行末までコメントとみなす。
  • HTMLファイルにて、空要素タグ <cgikit/> をサポート。
  • 例外クラスCKErrorを定義。
  • クッキークラスCKCookieを定義。
  • エスケープ及びその他CGIに関係するメソッドをCKUtilitiesクラスに移動。
    CKMessage#escape:-> escape_html
    CKMessage#unescape:-> unescape_html
    CKMessage#date:-> date
    CKMessage#_cookies:-> cookies
    CKAdaptee::CGI#escape:-> escape_url
    CKAdaptee::CGI#unescape:-> unescape_url
    CKAdaptee::CGI#parse:-> parse_query_string
  • 一般的なRubyのコーディングスタイルに従ってメソッド名を変更。
  • CKBinding、CKDefinitionの唯一のインスタンスメソッドをクラスメソッドに変更。
  • サンプルに"Cookie Counter"と"Request Shower"を追加。

1.0b3 (2002/10/9)

アプリケーション、エレメントの初期化ロジックを変更。

  • インストールにinstall.rbを導入した。
  • ライブラリを複数のファイルに分割した。
  • CKAdapterクラスの導入により、アプリケーションの初期化ロジックを変更した。
  • CKRequest、CKResponseクラスの導入により、cgi.rbを使うコードを置き換えた。
  • CKElementに初期化専用のメソッドinit_element()を追加。
  • CKApplicationをSingletonではなく普通にインスタンスを生成できるクラスにした。
  • CKElementとCKHTMLParserの初期化ロジックを変更した。
  • CKElement#_fetchFromRequestメソッドをCKComponentに移動した。

1.0b2 (2002/9/13)

一部コードの修正。

  • RDocに向けてコメントを修正。
  • "autoload" の使用を中止。
  • グローバル変数 $CKApp の削除。
  • デフォルトのアプリケーションパスを Dir.pwd に変更。

1.0b (2002/9/3)

CGIKit公開。

[Validate]