Windowsのためのmod_ruby+eRubyインストールメモ

いろいろ面倒だったのでメモ。
ソースコードからのコンパイルは無し。

環境

Ruby One-Click Ruby Installerに含まれるもの 1.8.2-15 C:/usr/local/ruby
eRuby One-Click Ruby Installerに含まれるTiny eRuby ? C:/usr/local/ruby
mod_ruby mod_ruby_win32binからダウンロードしたもの 1.2.4 -
httpd Apache win32版 2.0.54 C:/usr/local/Apache2

インストール

1.mod_rubyダウンロード
2.mod_ruby.soをC:/usr/local/Apache2/modulesにコピー。
3.mod_rubyのソースをダウンロード
4.mod_rubyのソースに含まれるlibディレクトリを、C:/usr/local/Apache2/mod_ruby/libにコピー。
5.mod_ruby_win32binにあるパッチをファイルに落として(ruby-run.rb.patch)、次のようにパッチを当てる。


$ cd /usr/local/Apache2/mod_ruby/lib/apache
$ patch -l < ruby-run.rb.patch
6.httpd.confに以下の記述を追加。

# mod_ruby, erb
LoadFile "C:/usr/local/ruby/bin/msvcrt-ruby18.dll"
LoadModule ruby_module modules/mod_ruby.so
<IfModule mod_ruby.c>
RubyAddPath C:/usr/local/Apache2/mod_ruby/lib
RubyRequire apache/ruby-run
RubyRequire apache/erb-run
RubyKanjiCode sjis
#RubySafeLevel 0
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options ExecCGI
</Files>
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERbRun.instance
Options ExecCGI
</Files>
</IfModule>
7.Apacheを再起動

テスト用のRubyスクリプト(hello.rb)


require "cgi"
CGI.new.header
puts <<EOS
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>こんにちは、Ruby/CGI</title>
</head>
<body>
こんにちは、Ruby/CGI
</body>
</html>
EOS

テスト用のeRubyスクリプト(hello.rhtml)


<%
ERuby.charset = "Shift_JIS"
msg = "こんにちは、Ruby/CGI"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title><%= msg %></title>
</head>
<body>
<%= msg %>
</body>
</html>