たごもりすメモ

コードとかその他の話とか。

サーバプログラムが環境変数を見て動作を変えるのは良い設計か?

前のエントリで書いたパッチと同目的のものが別の人によっても投稿されているんだけど、そっちは環境変数を参照してProxyを経由するかどうかを決定している。
記述としてはnet/httpに実装されているロジックを使っているので大変簡潔で素晴らしいんだけど、なんとなく環境変数を参照することに納得できないなあ、と悩んだのでそれを書き留めておく。

何がイヤなのか?

要するに、起動するサーバや起動の仕方によっては環境変数の設定を忘れてたり設定内容が違ってたりして混乱の元になりそうだなあ、というのがイヤなんだろう。起動するユーザが違いました、とかね。
ただこれは、あれこれのプラグインを各サーバに導入しておかないと動きませんよ、という問題と基本的にはあまり変わらない。個人がサーバ1台で運用するなら関係の無い話だし、デプロイ方法をちゃんと考えておくこと、とかそういう方法によっても解決できる。
Railsに限って言うと、(Apacheなら) .htaccess環境変数をセットしておくのが正しそうだ。全て同じProxyを通すはずなら。

ついでに言うと、最近の各種プロダクト(オープンソース系のね)を見ていると、そのあたりのことはあまり気にされていないようにも見える。大多数の人には特にマイナスでもないのかな?

環境変数の方が正しいんじゃ?

どのProxyを通すべきか、というような問題は、実際には各サーバによって(どのネットワークに置かれるかによって)異なる、という方がそもそも論として正しいんじゃないか? という話かも。
確かに普通は1台のマシン上なら、どのプログラムだろうと通すProxyサーバは同じだろう。プログラムによって通すProxyが異なるという状況が想像できない。
逆に、同じプログラムであってもデプロイされる先が違うネットワークなら通すProxyは異なる(可能性がある)んだから、デプロイ先の環境変数に従って勝手にやってよ、というのは自然かなあ。

で?

よくワカンネ。
上述の組み立てだと環境変数を見るという方が正しそうな気がするが、それでも何故かイヤな気分が解消されてくれない。
もうちょっと寝かせてからもう一度考えてみる。