YB-1を(ΦДΦ)磨まーす

昨日夕方、おかだ師匠がバイクの清掃道具をもってきてくださったので意気込んで早起きしてみたものの、天気はあんましよろしくないなぁ。晴れろ晴れろ。
_ mod_rubyとerubyを入れるのです。
ここんとこYBネタばっかなのでmod_rubyとerubyを入れたときのメモ。
mod_rubyとはapacheのRubyインタプリタモジュールで、erubyはテキストの中にrubyスクリプトを埋め込むための実装。
この二つがあれば、PHPのようにHTMLの中にRubyスクリプトを埋め込んでなおかつ高速でスクリプトを動かせるので非常に(゜д゜)ウマーなのです。
参考にしたのはこのへん。
_ インストールはdebianなので例によって例のごとくapt-getでパッケージを入れました。
ii libapache-mod-ruby 1.0.0-1 Embedding Ruby in the Apache web server
ii eruby 0.9.8-1 Embedded Ruby Language
ii liberuby 0.9.8-1 Library for eruby
ii liberuby-dev 0.9.8-1 Development files for liberuby
_ あとは、httpd.confにmod_rubyの設定を書き足してapacheを再起動する。
設定としては、apacheのmod_rubyモジュールを使うようにして、拡張子が.rhtmlならerubyのスクリプトであるって感じ。
LoadModule ruby_module /usr/lib/apache/1.3/mod_ruby.so
<IfModule mod_ruby.c>
RubyRequire apache/eruby-run
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
</IfModule>
_ テスト
簡単なカウンタのテストを書いてみた。呼ばれたら1づつ上がっていくはず。
そうそう、ERuby.charsetで文字コードを指定しないと文字が化けます。
<% ERuby.charset = "EUC-JP" %>
<html><head><title>erubyのtest</title></head>
<body>
<h1>カウンターのテストでござるよ。</h1>
<%
count = File.open("count.dat","r+")
count.flock(File::LOCK_EX)
l=count.gets.to_i+1
count.rewind
count.puts l
count.close
%>
<p><%= l %></p>
</body></html>
_ ブラウザで呼び出す前にerubyで呼び出してみよう。
$ eruby count.rhtml
<html><head><title>erubyのtest</title></head>
<body>
<h1>カウンターのテストでござるよ。</h1>
<p>1</p>
</body></html>
_ いい感じ。次にブラウザで呼び出してみよう。
おぅ!? Internal Server Error!?
なんでだろ。apacheのエラーログを見てみよう。
[Sun Oct 20 10:40:45 2002] [error] mod_ruby: error in ruby
/tmp/just.rhtml.1319.0:6:in `open': Permission denied - "count.dat" (Errno::EACCES)
_ あ、そうか。
CGIはSuExecでユーザー権限で動くようにしているのだけれど、mod_ruby+erubyはPHPと同じでapache内部のモジュールだから、apache権限で動くのか。
というわけでパーミッションを変更して無事動作しましたとさ。
_ だめだ
雨が降ってきた。
_ Macromedia Flash Player 6 beta
が出たそうです。
2chによると、日本語とかdspの奪い合いで固まる不具合が治ってるそうです。 _ 日本語表示でプレイヤーがクラッシュする模様。