現在、Windows 上にてKAGEMAIを運用しています。
このたび、KAGEMAIサーバー応答時間の改善を求め、mod_ruby を導入しようと試みていますが、
以下のエラーメッセージに直面しており、難航しております。
-------------------------------------------------------------------------------------------
o Browser (firefox)からのメッセージ
HTTP/1.1 200 OK
Content-Type: text/plain
Following errors occurred. Please contact administrator.
Could not load driver (182: このオペレーティング システムでは %1 は実行されません。
- C:/ruby/lib/ruby/gems/1.8/gems/ruby-postgres-0.7.1.2006.04.05-
mswin32/./postgres.so).
Note that in SAFE mode >= 1, driver URLs have to be case sensitive!
(DBI::InterfaceError)
-------------------------------------------------------------------------------------------
o log/error.log の中身
Could not load driver (182: <82><B1><82><CC><83>I<83>y<83><8C><81>
[<83>e<83>B<83><93><83>O <83>V<83>
X<83>e<83><80><82><C5><82><CD> %1 <82><CD><8E><C0><8D>s
- C:/ruby/lib/ruby/gems/1.8/gems/ruby-postgres-0.7.1.2006.04.05-
mswin32/./postgres.so).
Note that in SAFE mode >= 1, driver URLs have to be case sensitive!
(DBI::InterfaceError)
C:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:342:in `load_driver'
C:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:227:in `_get_full_driver'
C:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:213:in `connect'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/
dbistore.rb:94:in `execute'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/
dbistore.rb:399:in `count_reports'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/
project.rb:244:in `count_reports'
c:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
resource/ja/template/_default/topics_count.rhtml:4:in `eval_template'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/cgi/
action.rb:192:in `eval_template'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/cgi/
action.rb:191:in `instance_eval'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/cgi/
action.rb:191:in `eval_template'
c:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
resource/ja/template/_default/topics.rhtml:56:in `eval_template'
c:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
resource/ja/template/_default/topics.rhtml:53:in `each'
c:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
resource/ja/template/_default/topics.rhtml:53:in `eval_template'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/cgi/
action.rb:199:in `eval_template'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/cgi/
action.rb:198:in `instance_eval'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/cgi/
action.rb:198:in `eval_template'
c:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
lib/kagemai/cgi/action/top.rb:38:in `execute'
c:/Program Files/Apache Group/Apache2/htdocs/kagemai/lib/kagemai/
kagemai.rb:88:in `action'
C:/Program Files/Apache Group/Apache2/htdocs/kagemai/html/guest.rbx:
64:in `execute'
C:/Program Files/Apache Group/Apache2/htdocs/kagemai/html/guest.rbx:
112
C:\Program Files\Apache Group\Apache2\mod_ruby\lib/apache/ruby-run.rb:
53:in `load'
C:\Program Files\Apache Group\Apache2\mod_ruby\lib/apache/ruby-run.rb:
53:in `handler'
-------------------------------------------------------------------------------------------
問題の切り分けをすべく
以下のようなテストスクリプトをコマンドプロンプト上より
% ruby ruby_postgres_test.rbxと実行してみたところ正しく動作しました。
しかしながら、ブラウザ上よりruby_postgres_test.rbx を実行すると、
require 'postgres'の部分で、postgres が見つからないと怒られてしまいます。
postgres をDisable にした場合は、mod_ruby 経由で問題なくKAGEMAIが動作することは確認しました。
以上より、mod_ruby とpostgres ライブラリとの接続がうまくいっていないと考え、
mod_ruby のメーリングリストのサイトも調べてみたのですが、似たような問題を見つけることができませんでした。
どなたか同様な症状に直面した方はいらっしゃいませんでしょうか?
些細なことでかまいませんので、何かしら助言、情報等をいただけると大変助かります。
まことう
----------------------------------------------------------------------------
o ruby_postgres_test.rbx
#! /usr/bin/env ruby
#
# original file src/test/examples/testlibpq.c
#
require 'postgres'
conn = PGconn.connect("localhost", 5432, '', '', "testdb",
'postgres' );
res = conn.exec("select * from staff;");
p res.num_tuples;
-------------------------------------------------------------------------------
o log/error.log の中身
[Mon Oct 26 22:25:23 2009] [error] mod_ruby: C:/ruby/lib/ruby/
site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require':
no such file to load -- postgres (LoadError)
[Mon Oct 26 22:25:23 2009] [error] mod_ruby: from C:/ruby/lib/ruby/
site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
[Mon Oct 26 22:25:23 2009] [error] mod_ruby: from C:/Program Files/
Apache Group/Apache2/htdocs/kagemai/html/postgres_test.rbx:5
[Mon Oct 26 22:25:23 2009] [error] mod_ruby: from C:\\Program Files\
\Apache Group\\Apache2\\mod_ruby\\lib/apache/ruby-run.rb:53:in `load'
[Mon Oct 26 22:25:23 2009] [error] mod_ruby: from C:\\Program Files\
\Apache Group\\Apache2\\mod_ruby\\lib/apache/ruby-run.rb:53:in
`handler'
-------------------------------------------------------------------------------
o 現在の環境は以下のとおりです。
Kagemai 0.8.8
ruby 1.8.6
postgresql 8.4.1
apache 2.0.63
mod_ruby/1.2.4
mod_ruby on Windows の設定は以下のサイトを参考にしました。
http://rtokiwa.s55.xrea.com/wiki/index.php?mod_ruby_win32bin
-------------------------------------------------------------------------------