Redmine再びでレポジトリ参照におけるpassengerの問題

CVSのバージョンを更新したので、下記の構成でRedmineを入れ直してみた。

Redmine 0.8.7
ruby 1.8.7
Rails 2.1.2
Passenger(mod_rails) 2.2.4
OS Solaris 10 11/06

で、CVSのレポジトリを登録してみたのですが、なんか文字化けしなくなってる!!偉い。
ところが、起動をWEBrickからpassenger経由に変えるとなぜかレポジトリが見られない。
"リポジトリに、エントリ/リビジョンが存在しません。"となってしまう。
RedmineディレクトリはSolaris10のApache2環境に合わせてuid:gidをwebservd:webservdにしてある。

原因が判明した。
SubversionからGitへ移行&Redmine導入 - 仙台RailsなでしこVim社長
この方の例だと、gitだけど、Apache経由だとパスが見つからないらしい。

どれどれと思ってApacheのエラーログ(/var/apche2/logs/error_log)を覗いて見たところ

sh: cvs: 見つかりません。

やっぱり出てた。

ということで、パスを記述。変更箇所はlib/redmine/scm/adapters/cvs_adapter.rb

26         #CVS_BIN = "cvs"
27         CVS_BIN = "/opt/sfw/bin/cvs"

やった!!見えたでゴザル!!!

Passenger経由の環境変数の設定ってどうやるんだろう。なんかもう少しまともな解法がありそうだ。

↓あった。
Passing environment variables to Ruby from Phusion Passenger « Phusion Corporate Blog

アプリケーションの config/environment.rb に次の様に書けば良いらしい。

ENV['PATH'] = "#{ENV['PATH']}:/opt/sfw/bin"

同様にLD_LIBRARY_PATHなんかも設定出来るみたい。