RubyでCGIを書く際の最低限のテクニック(1)
最近、RubyでCGIを共作する機会があって、かなり慌てながら思い出している。
そもそも大したものを作ったことがないので、仮に全部を思い出したとしても大したレベルではないが、次にRubyに触る頃には忘れてそうなので、作り始めるときに思い出すと作業がスムーズになりそうなことをピックアップして書いておく。
まずサーバに.htaccessを書くところから
趣味といえど数人で作るプログラムなので、当面はメンバーだけが見れる状態にしておく。まあ、Rubyに限った話ではないか。
とりあえずrequire "CGI"とruby -d index.cgi
CGIモジュールを使うと、エラー出力がブラウザで見えない時がある。で、コマンドラインからスクリプトを動かすとoffline mode: enter name=value pairs on standard inputと出て、手打ちで変数を渡さないといけないのが面倒だ。起動時にデバッグオプションを付けると$DEBUGがtrueに設定されるので
unless $DEBUG then require "CGI" cgi = CGI.new q = cgi["q"] else q = "test" end
とか書いて、CGIモジュールを呼び出さずに値を設定できる。
同様に、デバッグ時だけ表示させるためにif修飾子を使ったり
print XX if $DEBUG
逆にデバッグ時に表示させなくてもよいものはunless修飾子で削っておくと、色々と捗る。
print <<HEADER unless $DEBUG XXXX HEADER
設定を外部ファイル(YAML or JSON)に入れておく
これも最初からやっておくべき。APIキーとかパスワードをソースに書いた状態でgit commitしちゃうと、仮に後で直せるとしても履歴として残るので気持ち悪い。
標準でYAMLが使えるが、僕はWebOS GoodiesさんのJSONパーサを使ってる。
http://webos-goodies.jp/archives/51019710.html
Formは後でjQueryで値を入れる
今回は特にフレームワークを使ってないので、printの中にHTMLタグをチマチマ書いてる。中でもHTMLフォームは、INBOXに表示させる値とか、SELECT要素でOPTIONをSELECTEDにするのとか、HTMLと変数が入り乱れ、printが最強に汚くなる。
jQueryの.val()を覚えてから、最初にHTMLで書いておいて、DBを引いてからjQueryで値を指定することにしてる。仮に処理がコケても、HTMLフォームが崩れないのは精神的によろしい。
最初からCSSで化粧しておくと気分がいい
僕はWebの見た目は無頓着なタイプなのだが、今回は見た目も良くしておきたかったので、Twitterが公開している BootstrapというCSSのツールキットを使ってみた。特にフォームが少し大人びた感じがして、生のHTMLの詰まった感じに比べて全然いい。
http://twitter.github.com/bootstrap/
--
もうちょっと貯まったら第二弾を書いてみようかと。
![]() | Ruby逆引きハンドブック るびきち by G-Tools |


Comments