at posts/single.html

さくらインターネット その7 - RUBYLIB

Webに設置予定の tDiary や BitChannel では、 uconv などのライブラリを使用する。 それぞれのプログラムごとにライブラリを置くのも管理が大変なので、共通のディレクトリにライブラリを置けないか試してみた。

Rubyでは、ライブラリの読み込み場所をいくつかの方法で指定できる。 ここでは、各プログラムに変更を加えなくてすむように、RUBYLIB環境変数を使うことにする。

CGI経由で起動されるプログラムへ環境変数を伝えるためには、 .htaccess の SetEnv ディレクティブを使う。 /home/machu/lib/ruby に拡張モジュールを置いているとすると、 .htaccess には以下のように指定する。

SetEnv RUBYLIB /home/machu/lib/ruby

ところが、これで試してみてもうまくいかない。 どうやらプログラムに RUBYLIB 環境変数が渡されていない模様。 あれこれ調べていると、Apacheのドキュメントに以下のように書かれていた。

CGI スクリプトを起動するために suexec が使用されている場合、CGI スクリプトが起動するために、環境変数は安全な環境変数の組に整理されます。 この安全な環境変数の集合は、コンパイル時に suexec.c で定義されます。

う〜ん。SetEnv で伝えられる環境変数には制限があるってことね。 XREA だと RUBYLIB は通ったのになぁ。 面倒でも、各スクリプトの先頭に

#!/usr/bin/env ruby -I /home/machu/lib/ruby

と書くしかないのか…。

関連する日記