thin(Rack)アプリを作ってみる
thinはRackという規格で、各種フレームワークのアプリケーションサーバになるようですが、どうやらフレームワークを使わなくても書こうと思えば書けるようなので、まずはシンプルにthin(Rack)のアプリケーションを書いてみます。
・callというメソッドを持っていること
・callメソッドの引数としてWebサーバからのリクエストを受けること
・callメソッドは,次の要素を含むレスポンスを返すること
・ステータスコード
・レスポンスヘッダ(Hash)
・レスポンスボディ(Array)
# coding: utf-8
class SimpleApp01
def call(env)
[
200,
{'Content-Type' => 'text/html'},
['<html><body>ハローthin(Rack)!!</body></html>']
]
end
end
- シンプルにステータスコード200と、htmlテキストだと示すヘッダ、html本文だけを返すサンプルです。
# coding: utf-8
require 'simpleapp01.rb'
run SimpleApp01.new
- こちらもシンプルに、「SimpleApp01」クラスを実行するだけのruファイルです。
これらを2つとも「C:\thin」に配置して、thinを実行します。
c:\thin>thin start -R simple01.ru
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
URLごとに別々のクラスを実行+画像表示
# coding: utf-8
class SimpleApp02
def call(env)
[
200,
{'Content-Type' => 'text/html'},
['<html><body><a href="/"><img src="/img/1179_64.png"/></a></body></html>']
]
end
end
# coding: utf-8
require 'simpleapp01.rb'
require 'simpleapp02.rb'
require 'rack/static'
use Rack::Static, :urls => ["/img"]
map "/" do
run SimpleApp01.new
end
map "/foo" do
run SimpleApp02.new
end
- ruファイルには、「map "/" do ~ end」で最初に作った「SampleApp01」を実行
- 「map "/foo" do ~ end」で新しく作った「SampleApp02」を実行しています。
- 更に、「use Rack::Static, :urls => ["/img"]」を追加して、「/img」ディレクトリの中の画像ファイルを表示出来るようにしてあります。
- カンマ区切りで、"/css"や"/js"等を追加することも出来るみたいです。
準備が出来たらthinを実行します。
c:\thin>thin start -R simple02.ru
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
コメント
最終更新:2013年03月21日 03:07