From a2d13385bced6ec0db5514380e1dbe51696c7f77 Mon Sep 17 00:00:00 2001 From: fukachan Date: Sat, 5 May 2001 03:53:38 +0000 Subject: make a chapter on config.cf --- fml/doc/ja/tutorial/book.sgml | 3 +- fml/doc/ja/tutorial/include/chapters.ent | 5 +- fml/doc/ja/tutorial/internals/config.cf.sgml | 145 +++++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 fml/doc/ja/tutorial/internals/config.cf.sgml (limited to 'fml/doc/ja/tutorial') diff --git a/fml/doc/ja/tutorial/book.sgml b/fml/doc/ja/tutorial/book.sgml index 8c525077..12f2c56d 100644 --- a/fml/doc/ja/tutorial/book.sgml +++ b/fml/doc/ja/tutorial/book.sgml @@ -2,7 +2,7 @@ This is an sgml using DocBook dtd. Use sgmltools version 2.0.x or above to generate various output formats. -$FML: book.sgml,v 1.3 2001/05/01 14:49:18 fukachan Exp $ +$FML: book.sgml,v 1.4 2001/05/01 15:16:24 fukachan Exp $ --> diff --git a/fml/doc/ja/tutorial/include/chapters.ent b/fml/doc/ja/tutorial/include/chapters.ent index 20c72bf2..6af9ec1a 100644 --- a/fml/doc/ja/tutorial/include/chapters.ent +++ b/fml/doc/ja/tutorial/include/chapters.ent @@ -1,5 +1,5 @@ @@ -7,6 +7,8 @@ + + @@ -36,6 +38,7 @@ + diff --git a/fml/doc/ja/tutorial/internals/config.cf.sgml b/fml/doc/ja/tutorial/internals/config.cf.sgml new file mode 100644 index 00000000..ca16a24e --- /dev/null +++ b/fml/doc/ja/tutorial/internals/config.cf.sgml @@ -0,0 +1,145 @@ + + + + 設定ファイル config.cf + + + + + MLごとの設定ファイル config.cf + + +各MLごとにさまざまなカスタマイズをすることができます。 +そのために &fml4; では +各MLのホームディレクトリ $DIR に config.ph というファイルがあります。 +これは .ph という名前でわかる通り perl script です。 + + + +perl script にはいくつか問題があります。 +perl script なので、perl が許す限りの自由な書き方ができます。 +これが config.ph の最大の問題です。 +makefml や CGI をはじめとする設定インターフェイスを書きにくいのです。 + + + +そこで &fml4; では、 +cf というファイルと config.ph という +2 つのフォーマットの異なるファイルが使われています。 + + + +しかし、これはこれで2つにわかれていることから保守しにくいものです。 +よって &fml5; では、設定インターフェイスにやさしい +新フォーマットを提唱します。 +それが config.cf です。 +これは本質的に postfix 風のフォーマットといってよいでしょう。 + + + + + + + + config.cf のフォーマット + + +config.cf のフォーマットは + + /etc/fml/main.cf + +と同様です。 + +変数名 = 値 + +変数名 = 値1 値2 値3 + +変数名 = 値1 + 値2 + 値3 + +のようにスペースないしは改行で区切って複数の値を書くことができます。 + + + +変数定義内での $ による変数の展開も可能です。 +例えば + +a = 値1 +b = $a/値2 + +は最終的に + +a = 値1 +b = 値1/値2 + +と解釈されます。 + + + + +展開は、すべての変数定義を読み込んだ後に行なわれます。 +そのため、以下のような定義をすると + +a = 値1 +b = $a/値2/$c +c = 値3 +a = 値4 + +次のように + +b = 値4/値2/値3 + +と解釈されます。 + + + + + + + + config.cf の多重読み込み(変数定義の上書き) + + +複数の config.cf を読み込み、定義の上書きを行なうことができます。 + + + +これを利用して +『デフォルトの定義』、 +『サイト固有の定義』、 +『ドメイン固有の定義』 +などを別のファイルに分離することができます。 +fml は起動時にそれらのファイルを順番に読みこみ、 +最後にML固有の config.cf を読み込みます。 +そして、その後に変数の展開処理を行ないます。 + + + + + + + 展開後に変数を代入すると? + + +$ をふくむ変数の値の代入が行なわれると、 +次回値を取り出すメソッドが呼ばれた際に、再展開が行なわれます。 + + + +例えば + +$config->{ key } = '$ml_home_dir/value'; + +という代入処理が行なわれると、次に + +$config->{ another_key } + +(キーはなんでもよい)メソッドが呼ばれた際に再評価されることになります。 + + + + + -- cgit v1.2.1