« とりあえずWebサーバの準備 | トップページ | 減価償却についてのH19年制度改正まとめ »

2007/05/29

ブラウザに文字列を表示させる

まず、ブラウザ上に簡単な文字列を表示するCGIを作ってみます。
「test.rb」という名前のファイルを作って、

#!/usr/bin/ruby
print "TEST"

と入力して保存し、ブラウザにて、http://localhost/test.rbとしてアクセスしてみると...「Internal Server Error」と表示されてしまいました。

ちょっと悩んで、他の人のページも参考にしてみると、何のファイルを送信するのかサーバーが理解していないからではないかという結論になって、

#!/usr/bin/ruby
print "Content-type: text/html¥n¥n"
print "TEST"

と入力してみると、無事にブラウザ上に「TEST」と表示されました。

PHPではhtmlの表示とロジックを分けるよう心がけてプログラミングしていたので、ここでも同じ事ができるか試してみます。
そのために、別のHTMLファイルを読込んで表示させる方法を探してみると、IO.read(ファイル名)というのを使うようなので早速試してみます。
「test.html」というファイルを作って、

<html>
<head>
  <title>TEST</title>
</head>
<body>
  This is a test.
</body>
</html>

と入力して保存し、先ほどのtest.rbを以下のように変更します。

#!/usr/bin/ruby
print "Content-type: text/html¥n¥n"
print IO.read("test.html")

すると、きちんと表示されました。
でも、これではあまり使い道が無いので、動的に表示できるようなものにしてみます。先ほどのHTMLを以下のように変更します。

<html>
<head>
  <title>_%title%_</title>
</head>
<body>
  _%body%_
</body>
</html>

そして、スクリプトを

#!/usr/bin/ruby
print "Content-type: text/html¥n¥n"
 
values = { "title" => "これはタイトル", "body" => "これは本文" }
html = IO.read("test.rb")
values.each_pair { |key, val|
  html = html.gsub("_%#{key}%_", val)
}
print html

とすると、タイトルと本文がそれぞれ変更されたものになりました。ということで、これくらいできればPHPで僕がやっていたことの半分はできるようになったのと同じです...こんな程度でやりたいことの50%にもなってしまうくせに、本家本元の開発者へ偉そうに話しかけるなんて...恥ずかしい。

上記をViewクラスとして今後流用できる形にまとめると下記となります。

#-------------------- view.rb --------------------
class View
  def load(values, filename)
    html = IO.read(filename)
    values.each_pair { |key, val|
      html = html.gsub("_%#{key}%_", val)
    }
    return html
  end
end

Ruby初心者なので、何か書き方とかにおかしな所があれば教えて頂けると助かります。
次回は、MySQLに接続する方法を試してみたいと思います。

|

« とりあえずWebサーバの準備 | トップページ | 減価償却についてのH19年制度改正まとめ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/15244995

この記事へのトラックバック一覧です: ブラウザに文字列を表示させる:

« とりあえずWebサーバの準備 | トップページ | 減価償却についてのH19年制度改正まとめ »