YKLookの作業用ディレクトリ
YKLookの作業用ディレクトリは二種類あります。
これは、YKLook の内部で利用している一時的なファイルを保持するためのディレクトリで、
それぞれ「セッション情報の管理用」と「標準入出力先の管理用」です。
ログファイル用のディレクトリについても共通する部分があるので、それも併記しています。
ログの詳細については
エラーの解決・デバッグ > ログファイル をご覧ください。
YKLookの作業用ディレクトリについて、その場所がどこかを確認するプログラムを用意しています。
必要なければ、この項目を読み飛ばしてください。
それぞれのディレクトリの詳細については、後述する各項目の説明をご覧ください。
この項では、以下、ディレクトリ確認用プログラムについて説明します。
YKLook をダウンロードしたディレクトリの
yklook-misc の中に、
ykshowdir.rb というファイルがあります。
このファイルを、プログラム製作者が利用している任意の場所にコピーし、以下のとおり変更してください。
- 1行目のコマンドパスを、お使いの環境に合わせて修正してください。
- 3行目の
require
のパスを、お使いの環境に合わせて修正してください。
- YKLook用プログラムをWebアプリとして起動するときは
yki_ht_farpath()
メソッドの定義を、お使いの環境に合わせて追加してください。
または、Webサーバの設定で環境変数 YKLOOK_FARPATH を定義しているか
確認してください。
参考:
YKLook用アプリの最初の一歩 > Webアプリとして起動・終了 → Webブラウザ用 jar ファイルの場所を指定
- お使いの環境がUNIX系(Mac OS Xも含む)の場合、ファイル実行権を付けてください。
( chmod +x 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_USER、USER、LOGNAME、USERNAME があるかをこの順番で調べ、最初に見つかったものについて、(8)の直下に
その名前でディレクトリを作り、これに決定。
環境変数がなければ、(8)をそのまま作業用ディレクトリに決定。 |
環境変数
YKLOOK_XXXPATH は、通常では未設定です。
プログラム製作者またはアプリ利用者が必要に応じて設定してください。
Webサーバの管理者が設定することもあります。
環境変数
TEMP と
TMP は、MS-Windows では
強制的に設定されていることがあります。
/var/tmp または
/usr/tmp または
/tmp は、
UNIX 系のOSではいずれかひとつは存在していますが、
安全のためWebアプリからは書き込み禁止になっていることもあります。
MS-Windows の場合はそれぞれ
\var\tmp または
\usr\tmp または
\tmp を意味しますが、通常は存在しません。
プログラム製作者またはアプリ利用者が必要に応じて設定してください。
環境変数
YKLOOK_USER は、通常では未設定です。
プログラム製作者またはアプリ利用者が必要に応じて設定してください。
Webサーバの管理者が設定することもあります。
環境変数
USER と
LOGNAME は
UNIX系のOSで設定されていることが多いです。
ただしWebサーバ経由で起動したときは、設定されないことも多いです。
環境変数
USERNAME は MS-Windows で設定されていることが多いです。
上記(1)から(7)までの基準ディレクトリのいずれもダメなときは、作業用ディレクトリのない状態になり、場合によってはプログラムの動作がおかしくなります。
詳細は後述のそれぞれの項目をご覧ください。
このディレクトリは、以下の情報を管理するためのものです。
- セッション管理対象のインスタンス変数
- 画面遷移時の受け渡しデータ
- 複数画面間の共有データ
- GUIオブジェクト
もしも前項の
ディレクトリの決定方法
でディレクトリが決定できなかったときは、セッション情報を保存しません。
プログラムの初期表示はできるが、それ以降の動作がおかしいときは、これが原因かもしれません。
画面遷移のないプログラムでは、スタンドアロンでは問題が起きずに、Webアプリとして起動したときにだけ動作がおかしくなる場合も、これが原因かもしれません。
このディレクトリは、Webアプリとして起動されたときのみ必要になります。
プログラムがWebアプリとして起動されたとき、標準入出力先はCGIプロトコルによりWebサーバと YKLook との通信用チャネルとして機能します。
従って、これにプログラム製作者が何らかの操作を加えると誤動作の原因になります。
それを避けるため、標準入出力先を切り替えて、プログラム製作者による介入を防いでいます。
ようするに
STDIO をリダイレクトしているということです。
もしプログラム製作者が標準入出力先に対して操作をした場合、それはこの「標準入出力先の管理用ディレクトリ」内の一時的なファイルに対する操作に置き換えられます。
- 標準入力・・・・・・空のファイルからの入力となり、結果として EOF になります。
- 標準出力・・・・・・別の一時的なファイルにリダイレクトされます。
- 標準エラー出力・・・プログラム製作者に任されています。
標準エラー出力は実際には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をお使いの場合も、必要に応じてディレクトリのアクセス権を設定してください。
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.