matsumoto-r/mod_mruby — pull request #14 by tsuzakiyo (2012-06-15 01:04:00+00:00)
Title: ap_mrb_init.c, ap_mrb_request.h and ap_mrb_request.c modified

request_rec構造体でconst char型で宣言されているメンバのset関数を作成しました。

■動作検証
以下の設定を行い、ブラウザからアクセスし、問題ないことを確認しております。

-/etc/httpd/conf/httpd.conf(以下の行追加)
LoadModule mruby_module /usr/lib/httpd/modules/mod_mruby.so

-/etc/httpd/conf.d/mruby.conf(作成)
LoadModule mruby_module modules/mod_mruby.so
AddHandler mruby-script .mrb
mrubyTranslateNameMiddle /var/www/html/mrbfile/translate_name_middle.mrb

-/var/www/html/mrbfile/translate_name_middle.mrb(作成)
require 'Apache'
r = Apache::Request.new()
Apache.rputs("---- translate_name_middle ----
")
Apache.rputs("hostname= "+r.hostname+"
")
Apache.rputs("status_line= "+r.status_line+"
")
Apache.rputs("method= "+r.method+"
")
Apache.rputs("range= "+r.range+"
")
Apache.rputs("content_encoding= "+r.content_encoding+"
")

r.filename = "/var/www/html/hooktest/translate_name_middle.html"
r.hostname = "test_server"
r.status_line = "test1"
r.method = "test2"
r.range = "test3"
r.content_encoding = "test4"

Apache.rputs("---- request_rec changed ----
")
Apache.rputs("hostname= "+r.hostname+"
")
Apache.rputs("status_line= "+r.status_line+"
")
Apache.rputs("method= "+r.method+"
")
Apache.rputs("range= "+r.range+"
")
Apache.rputs("content_encoding= "+r.content_encoding+"
")

Apache.return(Apache::OK)

-/var/www/html/hooktest/translate_name_middle.html(追加)
translate_name_middle

上記のファイルを準備し、apacheの起動後アクセスすると設定した値が変更されていることが確認できた。
-結果(※${hostname}はサーバのホスト名が入っている)
---- translate_name_middle ----
hostname= ${hosname}
status_line= null
method= GET
range= null
content_encoding= null
---- request_rec changed ----
hostname= test_server
status_line= test1
method= test2
range= test3
content_encoding= test4
translate_name_middle