札幌ruby会議03のlt

Post on 14-May-2015

615 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

4 Dec. 2010

たまにはcgi.rbのことでも話してみる

xibbar / 藤岡岳之

札幌Ruby会議03 LT

2010年12月10日金曜日

cgi.rbのキホン

cgiをrequireし、インスタンスを作る。 CGI#outで引数にヘッダ情報を与えて、ボディーはブロックでStringを渡すと

出力される。2010年12月10日金曜日

(続)cgi.rbのキホン

こんな感じで出力される。2010年12月10日金曜日

ヘッダをplainにすると

ヘッダのContent-Typeをわざとplainにしてみると・・・

2010年12月10日金曜日

(続)plainにすると、、

素で出力される(あたりまえだけど)2010年12月10日金曜日

ちなみにコンソールでは

こんな感じで、ヘッダが出力されて、そのあとボディーが出力される。

% ruby hello1.rb </dev/nullContent-Type: text/plainContent-Length: 154

<html><head><title>札幌Ruby会議03</title></head><body><h1>たまにはcgi.rbのことでも話してみる</h1><h2>xibbar</h2></body></html>

2010年12月10日金曜日

rackとは?

Ruby on Railsやsinatraなどで使われている、ウェブアプリケーションゲートウェイRubyにも採用してほしいと言われたけど、ドキュメントが貧弱だということもあってペンディング状態(gemでいんじゃないの?と言われている。)cgi以外にもpassengerとかでも動く

2010年12月10日金曜日

rackの書式

envをうけて、配列を返すcallというメソッドがあるオブジェクトを

ハンドラに渡す

2010年12月10日金曜日

rackでの出力結果

こんなふうに出力される。(当然)2010年12月10日金曜日

rakugakiっての作った

cgi.rbとの違いは、requireの部分のみ

2010年12月10日金曜日

rakugakiの結果

変わらないように見える2010年12月10日金曜日

rakugaki.rbの中身

require ‘rack’して、includeしてrackをとりこみ、CGIクラスをrackで実装している。initializeでは初期化するだけ。

2010年12月10日金曜日

(続)rakugaki.rbの中身

考え方として、CGI#outでは出力をするのではなく、出力する処理を定義するもの。

つまり、@bodyに出力したいブロックを代入してとっておく。

そして、ハンドラーにselfを渡す(cgiの場合だけです。)

2010年12月10日金曜日

(続々)rakugaki.rb

ハンドラーがオブジェクトのcallを呼ぶ。前処理をして、最後に@body.callしているのばミソ

2010年12月10日金曜日

rakugakiを使う留意点

出力はすべて、CGI#outを使う

こと2010年12月10日金曜日

全部CGI#outにしてみたら

2010年12月10日金曜日

tDiaryもみえた

POSTがまだバグっていて更新はできなかったけど。

2010年12月10日金曜日

さらに

2010年12月10日金曜日

passengerでも動いた

まだバグっていて更新はできないけどな。

2010年12月10日金曜日

passengerで動かすには

publicとtmpのディレクトリが必要publicは.にシンボリックリンクでイケタ

config.ruが必要index.rbをまるごとdef endでくくって、config.ruのprocから呼び出すという、ブロックにしちゃいました。

2010年12月10日金曜日

パフォーマンスチェック

cgi passenger

Requests per second: 2.03 [#/sec] 3.41 [#/sec]

まあこんなもんか。

さっきのサイトでパフォーマンステスト

2010年12月10日金曜日

まとめRubyのブロックすごすぎる。

CGI#outのブロックをハンドラーからcallされるまで

とっておけるなんて。2010年12月10日金曜日

rakugakiとは

Rack Gate CGI=>

rakugaki

と命名してみた次第 おわり

2010年12月10日金曜日

top related