2011年12月12日月曜日

[Rails3] 外部の Oracle DB に接続する(その3:Passenger対応編)

実行環境:
centOS 5.7
ruby 1.9.3
Rails 3.1.3
ruby-oci8 2.0.6
activerecord-oracle_enhanced-adapter 1.4.0
Rails3で外部のOracle DBにアクセスします。
その3:Passenger対応編。Passengerでデプロイする場合に必要な対応について、です。

環境変数の設定について

Passengerでデプロイする場合、環境設定がうまくセットされません。
Oracle のアダプタを使う場合 LD_LIBRARY_PATH 環境変数が必要なため、Mongrelサーバで動いてもPassengerではうまく動かないということが起こります。その回避方法です。

まず ruby の wrapper となるシェルスクリプトを作成します。シェルスクリプトの保存場所はどこでもOKです。
/usr/local/bin/ruby_wrapper_for_passenger
#!/bin/sh export LD_LIBRARY_PATH='/usr/lib/oracle/11.2/client/lib' "/usr/local/bin/ruby" "$@"
もちろん忘れずにこのスクリプトを実行可能にします。
# chmod 755 /usr/local/bin/ruby_wrapper_for_passenger

今作った wrapper を httpd.conf の Passenger が起動する ruby として指定します。
/etc/httpd/conf/httpd.conf
PassengerRuby /usr/local/bin/ruby_wrapper_for_passenger

これで無事に動くと思います。(^^)

0 件のコメント:

コメントを投稿