さくらのレンタルサーバでErubisを動かしてみた
RubyのCGIスクリプトを作る時に、HTML出力にRubyスクリプトでprint書きまくるのも嫌なので、やはりeRubyを使いたい。どうせなら高速なeRubyエンジンのErubisを使いたい。
というわけで、さくらのレンタルサーバでErubisを動かしてみました。自分のマシンなら、Erubisを使うにはRubygemsでインストールすれば良いのだけど、レンタルサーバだとそういうわけにもいかない。
そこで、CGIファイルを置くディレクトリにErubisのソース一式を手動で置く方法を使った。
Erubisのソース一式をlibディレクトリに置いて、CGIファイル(rubyスクリプト)の先頭に以下のように書けばErubisが使えるようになる。
#!/usr/local/bin/ruby -I./lib require 'erubis'
1行目の"-I"の後に空白があると"./lib"が読み込まれないので、"-I./lib"と空白なしで書く事に注意。
また -I オプションを使わずに、2行目に require 'lib/erubis' と書いても、多分行ける。
他にも、$LOAD_PATHをいじって、$LOAD_PATH.unshift("./lib") とか $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib") と書く方法もあります(コメント下さった方、ありがとうございます)。
以下、環境変数の一覧を表示するeRubyスクリプトを例に詳細説明。
CGIソース一式
ローカルで、環境変数の一覧を表示するためのCGIスクリプトとeRubyスクリプトを用意。
$ ls ~/Sites/cgi printenv.cgi printenv.rhtml
ちなみに上記の ~/Site/cgi ディレクトリは、ローカルの作業ディレクトリ。
printenv.cgiはこんな感じ。
#!/usr/local/bin/ruby -I./lib require 'cgi' require 'erubis' cgi = CGI.new cgi.out({'charset'=>'utf-8'}) do Erubis::EscapedEruby.load_file('printenv.rhtml').evaluate end
printenv.rhtmlはこんな感じ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>環境変数一覧</title> </head> <body> <h1>環境変数一覧</h1> <table border> <tr><th>名前</th><th>値</th> <% ENV.each do |key,value| %> <tr><td><%=key%></td><td><%=value%></td></tr> <% end %> </table> </body> </html>
Erubisのソース一式
以下からErubisのソース一式をダウンロード。
http://rubyforge.org/frs/?group_id=1320&release_id=7090
Erubisが利用しているabstractライブラリのソース一式もダウンロード。
http://rubyforge.org/frs/?group_id=1444&release_id=4578
ダウンロードしたアーカイブを展開して、2つのアーカイブのlibディレクトリ以下の*.rbファイルをまとめたlibディレクトリを、cgiファイルを置くディレクトリ(ここでは ~/Sites/cgi )に作る。
libディレクトリのファイル一覧はこんな感じ。
$ ls -F ~/Sites/cgi/lib ababstract.rb erubis/ erubis.rb
さくらのサーバにアップロード
用意したファイル一式(ここでは ~/Sites/cgi 以下のファイル一式)をさくらのサーバにアップロードする。
なお、ファイルのアクセス権限を755にするのは、*.cgiのみで十分。残りのファイルは644で問題なし。
Erubisにキャッシュファイル*.cachを作らせる場合でも、特にディレクトリのアクセス権限の設定などは不要。さくらのWebサーバ(Apache)の場合、suExecを使って、CGIは所有者権限で動作するようなので*1、何も設定しなくてもキャッシュファイル作可能。