コーディングをしようと思ったけど酒飲んでるので無理!
かわりにmod_rubyをWindows + Apache 2.2でビルドした。
ビルド環境
- mod_ruby-1.2.6
- Visual C++ 2005 Express Edition
- Microsoft Platform SDK
- Apache_2.2.3-Openssl_0.9.8d-Win32
- ActiveScriptRuby 1.8.6(111)
- ASRDev18
ビルド手順
1.ASRのwin32.hに以下のパッチを充てる。
--- win32.h.orig 2007-12-01 00:59:39.875000000 +0900 +++ win32.h 2007-12-02 23:49:59.062500000 +0900 @@ -118,8 +118,8 @@ #define close(h) rb_w32_close(h) #define fclose(f) rb_w32_fclose(f) -#define read(f, b, s) rb_w32_read(f, b, s) -#define write(f, b, s) rb_w32_write(f, b, s) +#define _read(f, b, s) rb_w32_read(f, b, s) +#define _write(f, b, s) rb_w32_write(f, b, s) #define getpid() rb_w32_getpid() #define sleep(x) rb_w32_sleep((x)*1000) #ifdef __BORLANDC__
3.mod_rubyのライブラリを$RUBY_HOME/lib/ruby/site_ruby/1.8配下にコピーして、apache/ruby-run.rbに以下のパッチを充てる。
--- ruby-run.rb.orig 2005-08-03 10:32:41.000000000 +0900 +++ ruby-run.rb 2007-12-03 00:39:29.921875000 +0900 @@ -69,10 +69,10 @@ r.log_reason("Options ExecCGI is off in this directory", r.filename) return FORBIDDEN end - unless r.finfo.executable? - r.log_reason("file permissions deny server execution", r.filename) - return FORBIDDEN - end +# unless r.finfo.executable? +# r.log_reason("file permissions deny server execution", r.filename) +# return FORBIDDEN +# end return OK end
4.httpd.confに以下を追加。
LoadFile "C:\usr\local\ruby-1.8\bin\msvcrt-ruby18.dll" LoadModule ruby_module modules/mod_ruby.so <IfModule mod_ruby.c> #RubySafeLevel 0 #RubyKanjiCode euc RubyRequire apache/ruby-run <Files *.rb> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> RubyRequire auto-reload </IfModule>
5.$APACHE_HOME/htdocs/hello.rb(↓)を実行。
print "Hello World.\n"