とりあえずRubyをCGIではじめてみた

なんでRuby

そのうちお仕事でRubyOnRailsの勉強をしないといけないようなので、とりあえずRuby構文をCGIでお勉強。RubyOnRailsやるっていってもRubyが分からないとお話にならなそうなので
※ちなみに僕はPHPだけちょっと分かるます

コマンドラインからSyntaxチェック

Rubyだと

ruby -c filename.cgi

らしい、

ちなみにPHPだと

php -lc filename.php

こんな感じ?

print関数でダブルクォーテーション内の変数の置き換え方法

たいとる難しいわ

Rubyだと#{hogehoge}ということで

tmp_text = "太い文字だよ"
print "<b>#{tmp_text}</b>"

PHPだと

$tmp_text = "太い文字だよ";
print "<b>{$tmp_text}</b>"; # あんまり使われない?
print "<b>${tmp_text}</b>"; # これもあんまり使われない?
print "<b>$tmp_text</b>";   # これが多い?

んな感じ

文字列をhtmlエスケープしたい

Rubyだと

require "cgi"
cgi = CGI.new
print CGI.escapeHTML("<b>あはは</b>")

こんな感じらしい(もしかしたら無駄なことしてるかも)

PHPだと

echo htmlspecialchars("あいうえお");

かな

ただ、エスケープされる文字種が異なる

エスケープされる文字

Ruby CGI.escapeHTML() ", <, >, &
PHP htmlspecialchars() ', ", <, >, &

すんげーわかりづらい表だけど、RubyのescapeHTML()はシングルクォーテーションがエスケープされないみたい。
なんかうまいこと出来るのかな?

ファイルの読み出し

Rubyだと

fh = open(FILENAME, "r")
fh.each{|text|
  print text
}
fh.close

PHPだと

$fh = fopen(FILENAME, "r")
while( ! feof( $fh ) ){
  echo fgets( $fh );
}
fclose($fh);

ざっくりこんな感じ?

使用してみた標準ライブラリ

cgi フォーム関連
kconv マルチバイト関連

なんか参考にしたサイトだとcgi-libとかになってたけどcgiと何が違うんだろうか。

参考サイト

http://rubycgi.org/cgi_explanation/index.htm
 →分かりやすい&見やすい
プログラミング言語 Ruby リファレンスマニュアル
 →Rubyのライブラリ - ドキュメント

PHP使ってる人からみたRuby

ネットで検索してもあんまりよさげなサイトが引っかからない(PHPと比べると)
まあきっとRubyの公式ドキュメントが充実しているからPHPみたいに翻訳しなおしているだけのサイトとかが少ないのだろう・・・と

今回はファイルの読み書きをお勉強したけど、次はDB接続とかやってみようかなー