YKLook説明書 環境設定 YKLookの作業用ディレクトリ 前へ   次へ
   

YKLookの作業用ディレクトリ


YKLookの作業用ディレクトリは二種類あります。
これは、YKLook の内部で利用している一時的なファイルを保持するためのディレクトリで、 それぞれ「セッション情報の管理用」と「標準入出力先の管理用」です。
ログファイル用のディレクトリについても共通する部分があるので、それも併記しています。
ログの詳細については エラーの解決・デバッグ > ログファイル をご覧ください。


ディレクトリを確認

YKLookの作業用ディレクトリについて、その場所がどこかを確認するプログラムを用意しています。
必要なければ、この項目を読み飛ばしてください。
それぞれのディレクトリの詳細については、後述する各項目の説明をご覧ください。
この項では、以下、ディレクトリ確認用プログラムについて説明します。


YKLook をダウンロードしたディレクトリの yklook-misc の中に、 ykshowdir.rb というファイルがあります。
このファイルを、プログラム製作者が利用している任意の場所にコピーし、以下のとおり変更してください。

このプログラムをスタンドアロンで起動すると、作業用ディレクトリを決定しそれを表示します。
Webアプリとして起動するときは、Webサーバの認識している適切なディレクトリへコピーし、Webブラウザから適切なURLでアクセスしてください。
お使いの環境がUNIX系(Mac OS Xも含む)の場合、コピーしたときは、ファイル実行権が消えずに残っているかどうかを確認してください。

このプログラムの表示内容は以下のとおりです。
log: デフォルトのログファイル用のディレクトリ
ses: セッション情報の管理用ディレクトリ
red: 標準入出力先の管理用ディレクトリ
もしディレクトリを決定できないときは「 --- unknown --- 」と表示します。
その他、デフォルトのエラーログ出力用ファイル名のフルパス(error-log file:) や、作業用ディレクトリに関係のある環境変数も表示します。

補足説明: 環境変数が未定義のときは「--- undefined ---」と表示しますが、
OSや環境によっては必要のない環境変数もありますので、単純に
参考程度の情報としてご覧ください。


YKLook用プログラムをスタンドアロンで起動したときと、Webアプリとして起動したときで、作業用ディレクトリが微妙に異なる場合があります。
これは、それぞれの環境の違いによるものです。
コンピュータの運用方針によっては、この違いをそのままにしておいたほうがいい場合もあれば、統一したほうがいい場合もあります。
ディレクトリの設定方法については後述していますので、必要に応じて設定してください。

このプログラム内で定義しているクラス YKInfoDemo をご自分のプログラムにコピーして、より柔軟な方法で表示することもできます。
そのときは、 YKInfoDemo.fn_show() が役に立つかもしれません。

このプログラムを起動したときに、画面に表示したディレクトリがまだないときは、自動的に作ります。
すでにあるとき、またはディレクトリが決定できなかったときは、何もしません。
決定できなかったときの対処法は、次項およびそれ以降の項目で説明します。


ディレクトリの決定方法

YKLook の内部では、以下のようにして作業用ディレクトリを決定しています。
以下の説明のうち、(1)の YKLOOK_XXXPATH の部分と、(8)の yklookxxx の部分は、それぞれのディレクトリごとに下記のようになります。

ディレクトリ YKLOOK_XXXPATH yklookxxx
デフォルトのログファイル用 YKLOOK_LOGPATH yklooklog
セッション情報の管理用 YKLOOK_SESPATH yklookses
標準入出力先の管理用 YKLOOK_REDPATH yklookred

以下、作業用ディレクトリの決定方法を説明します。

(1) 環境変数 YKLOOK_XXXPATH があれば、それを基準ディレクトリとし、(8)へ。
(2) 環境変数 TEMP があれば、それを基準ディレクトリとし、(8)へ。
(3) 環境変数 TMP があれば、それを基準ディレクトリとし、(8)へ。
(4) /var/tmp があれば、それを基準ディレクトリとし、(8)へ。
(5) /usr/tmp があれば、それを基準ディレクトリとし、(8)へ。
(6) /tmp があれば、それを基準ディレクトリとし、(8)へ。
(7) Ruby プログラムを起動したディレクトリを基準ディレクトリとし、(8)へ。
(8) 基準ディレクトリ直下に yklookxxx というディレクトリがなければ作る。
作れないときは、別の基準ディレクトリを探す。
(9) 環境変数 YKLOOK_USERUSERLOGNAMEUSERNAME があるかをこの順番で調べ、最初に見つかったものについて、(8)の直下に その名前でディレクトリを作り、これに決定。
環境変数がなければ、(8)をそのまま作業用ディレクトリに決定。

環境変数 YKLOOK_XXXPATH は、通常では未設定です。
プログラム製作者またはアプリ利用者が必要に応じて設定してください。
Webサーバの管理者が設定することもあります。

環境変数 TEMPTMP は、MS-Windows では 強制的に設定されていることがあります。

/var/tmp または /usr/tmp または /tmp は、 UNIX 系のOSではいずれかひとつは存在していますが、 安全のためWebアプリからは書き込み禁止になっていることもあります。
MS-Windows の場合はそれぞれ \var\tmp または \usr\tmp または \tmp を意味しますが、通常は存在しません。
プログラム製作者またはアプリ利用者が必要に応じて設定してください。

環境変数 YKLOOK_USER は、通常では未設定です。
プログラム製作者またはアプリ利用者が必要に応じて設定してください。
Webサーバの管理者が設定することもあります。

環境変数 USERLOGNAME は UNIX系のOSで設定されていることが多いです。
ただしWebサーバ経由で起動したときは、設定されないことも多いです。
環境変数 USERNAME は MS-Windows で設定されていることが多いです。

上記(1)から(7)までの基準ディレクトリのいずれもダメなときは、作業用ディレクトリのない状態になり、場合によってはプログラムの動作がおかしくなります。
詳細は後述のそれぞれの項目をご覧ください。


セッション情報の管理用ディレクトリ

このディレクトリは、以下の情報を管理するためのものです。
もしも前項の ディレクトリの決定方法 でディレクトリが決定できなかったときは、セッション情報を保存しません。
プログラムの初期表示はできるが、それ以降の動作がおかしいときは、これが原因かもしれません。
画面遷移のないプログラムでは、スタンドアロンでは問題が起きずに、Webアプリとして起動したときにだけ動作がおかしくなる場合も、これが原因かもしれません。


標準入出力先の管理用ディレクトリ

このディレクトリは、Webアプリとして起動されたときのみ必要になります。


プログラムがWebアプリとして起動されたとき、標準入出力先はCGIプロトコルによりWebサーバと YKLook との通信用チャネルとして機能します。
従って、これにプログラム製作者が何らかの操作を加えると誤動作の原因になります。
それを避けるため、標準入出力先を切り替えて、プログラム製作者による介入を防いでいます。
ようするに STDIO をリダイレクトしているということです。

もしプログラム製作者が標準入出力先に対して操作をした場合、それはこの「標準入出力先の管理用ディレクトリ」内の一時的なファイルに対する操作に置き換えられます。
標準エラー出力は実際にはWebサーバへ出力することになります。
その結果、WebサーバによってはCGIスクリプトが異常終了したとみなされます。


もしデバッグ用に情報を出力したいときは、 エラーの解決・デバッグ > ログファイル の利用を検討してください。


もしも前述の ディレクトリの決定方法 でディレクトリが決定できなかったときは、標準入出力先を切り替えることができません。
そのため、プログラム製作者による標準入出力先への操作があった場合、スタンドアロンで使うときは問題ありませんが、Webアプリとして使うときに問題となります。
もちろん、そのような入出力操作がなければ、Webアプリのときも問題はありません。


スイープ処理

YKLookの作業用ディレクトリ配下のファイルは、ある一定の周期で自動的に古いものから順に削除しています。
これにより、コンピュータ管理者の手間・負担を軽くすることができます。

詳細は スイープ処理 の説明をご覧ください。


注意事項

YKLookの作業用ディレクトリは、前述の ディレクトリの決定方法 に従ってディレクトリが決まります。
任意のディレクトリを指定したいときは、前述の説明にもありました以下の環境変数を設定してください。

環境変数 説明
YKLOOK_LOGPATH デフォルトのログファイル用
YKLOOK_SESPATH セッション情報の管理用
YKLOOK_REDPATH 標準入出力先の管理用
YKLOOK_USER YKLook の利用者専用

環境変数を設定するには、プログラムを起動するよりも前に設定する方法と、プログラムの中で指定する方法とがあります。
プログラムを起動するよりも前に設定する方法はOS・Webサーバ等により異なり、それを説明するのは YKLook の範囲を超えますので、お使いの環境の説明書等をご覧ください。

プログラムの中で指定するときは require よりも前で指定してください。

#!/usr/bin/ruby -Ke
ENV['YKLOOK_SESPATH'] = '/tmp/yklook'
ENV['YKLOOK_REDPATH'] = '/tmp/yklook'
require '/opt/yklook/swing'

... その他の処理 ...



任意のディレクトリ(この例では /tmp/yklook )を指定する場合は、事前にそのディレクトリを作っておいてください。
以下は UNIX(Mac OS X を含む)でのディレクトリを作るコマンドの例です。
mkdir /tmp/yklook
chmod 777 /tmp/yklook
最後のコマンド chmod により、そのディレクトリ内にはすべてのユーザがファイルを作れるようにアクセス権を設定しています。
複数のユーザで利用するときは、自分以外のユーザにもそのディレクトリへのアクセス権を設定する必要があります。
また、たとえ自分ひとりしか使ってないとしても、Webアプリとして利用するときは、Webサーバが独自のユーザIDを使って稼働していることが多いのでアクセス権が必要です。
他のOSをお使いの場合も、必要に応じてディレクトリのアクセス権を設定してください。




   
YKLook説明書 環境設定 YKLookの作業用ディレクトリ 前へ   次へ


Copyright (c) 2003-2010 YorozuKotowariYa Ltd.