XREA+にSinatraを仕込んだのでメモ。

Rubyで動く軽量フレームワークSinatraを使いたくなったので導入してみた。

Sinatrarubygems経由での導入となるので、XREAのサーバに対してsshで接続して作業します。

rubyのバージョンは

ruby 1.8.5 (2006-12-04 patchlevel 2) [i686-linux]

まずは~/.bashrcの編集。デフォルトだと存在しないはずなので適当に以下の内容で作成。

export PATH=$PATH:$HOME/bin:$HOME/lib/ruby/gems/1.8/bin
export GEM_HOME=$HOME/lib/ruby/gems/1.8
export RUBYLIB=$HOME/lib/ruby:$HOME/lib/ruby/site_ruby/1.8

で、再読み込み。

> source ~/.bashrc

で、適当にディレクトリ作ってrubygemsを落としてくる。
解凍して、

> mkdir ~/src
> cd ~/src
> wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
> tar zxf rubygems-1.3.5.tgz

setup.rbを実行。

> cd ~/src/rubygems-1.3.5
> ruby setup.rb all --prefix=$HOME

rubygemsは~/lib以下に置かれてしまうので、配置を修正。

> cd ~/lib
> mkdir ruby/site_ruby
> mkdir ruby/site_ruby/1.8
> mv gauntlet_rubygems.rb ruby/site_ruby/1.8/
> mv rubygems.rb ruby/site_ruby/1.8/
> mv ubygems.rb ruby/site_ruby/1.8/
> mv rbconfig ruby/site_ruby/1.8/
> mv rubygems ruby/site_ruby/1.8/

終わったら成功したか確認するためバージョン表示。

> gem -v
1.3.5

で、gemでSinatraをインストール。

> gem install sinatra --no-ri --no-rdoc
Successfully installed rack-1.2.1
Successfully installed tilt-1.2.2
Successfully installed sinatra-1.1.3
3 gems installed

で、後は適当なディレクトリで以下のファイルを作成。

# .htaccess

SetEnv RUBYLIB /virtual/(username)/lib/ruby/site_ruby/1.8:/virtual/(username)/lib
SetEnv GEM_HOME /virtual/(username)/lib/ruby/gems/1.8

AddHandler cgi-script .cgi
#AddHandler cgi-script-debug .cgi
Options +FollowSymLinks +ExecCGI
# test.cgi

#!/usr/bin/ruby
require 'rubygems'
require 'sinatra'

get '/hi' do
  'Hello World!'
end

set :run => false, :environment => :cgi
Rack::Handler::CGI.run Sinatra::Application

後はhttp://hoge/test.cgi/hi
でアセスするとHello, World!が見れるはず。

と思っていたけれど、Sinatraでエラーが出ていたのでソースを修正した。

# ~/lib/ruby/gems/1.8/gems/rack-1.2.1/lib/rack/utils.rb

36: ESCAPE_HTML_PATTERN = Regexp.union(ESCAPE_HTML.keys)

36: ESCAPE_HTML_PATTERN = Regexp.union(ESCAPE_HTML.keys.join(","))

作業後に書いたから抜けがあるかもw


参考サイト様:
http://shockby.com/2009/04/22/sinatra%E3%80%81%E7%B5%90%E6%A7%8B%E3%81%84%E3%81%84%E3%81%8B%E3%82%82/

http://kitbc.s41.xrea.com/main/?install_sinatra
XREAにRubyGemsをインストールする - 名もないテクノ手
XREAにRubyGemsをインストール | tech.portalshit.net