English Korean Chinese

RubyでCGI・入門編

今野 滋

初めの一歩・Textのみを表示してみよう

Rubyを使ったCGIで「世界のみなさん、こんにちは。」と表示させてみましょう。
まず、Terapad にて、下記のように書きます。

○

#!/usr/local/bin/ruby -Ks
puts "Content-type: text/plain;charset=Shift_JIS"
puts
puts "世界のみなさん、こんにちは。"

改行コードをLFに指定して保存します。漢字コードはShift_JIS のままにしておいてください。

○

○

ファイル名はとりあえず、hello.cgi とします。
※保存先はGドライブとします。(My Documents やディスクトップは避けてください。)
※ファイル名に、全角文字、日本語、記号、空白は使えません。a..z0..9のみ可。

○

cgiとして保存すると、Terapadでは色分け表示されます。

○

FTPにて、wwwを開き、ディレクトリtestを作成(右クリック→フォルダ→新規作成)。そのtestを開き、先ほど作成した hello.cgi を転送します。

○

Terminal にて、転送したファイルのモードを700にします。
(一般には755ですが、我々の環境では700が可能です。)
最後に、ls -al で、モードが -rwx------ になっている事を確認します。

○

その場で直接にプログラムを実行してみる事も可能です。
./hello.cgi と書いて、enter↵。

○

ブラウザで表示を確認してみます。
※自分のホームページを見るには、アドレス欄に、cens/~ユーザーID を入力してenter↵。

○

○

練習です。時刻も表示する様にしてみましょう。答えの例はポインターをかざすか、マークすると現れます。(古いブラウザや欠陥品などでは、始めから見えているかもしれません。)

#!/usr/local/bin/ruby -Ks
puts "Content-type: text/plain;charset=Shift_JIS"
puts
puts "世界のみなさん、こんにちは。"
print "ただいま日本の時刻は、", Time.now, " です。"

参考:上記CGIをユニコードUTF-8 にして動作させる方法

-Ks を -Ku に書き換え、さらに、charset=Shift_JIS を charset=UTF-8 に書き換えます。そして、「漢字/改行コード指定保存」にて、漢字コードUTF-8N を選択します。UTF-8ではなくて、UTF-8Nです。UTF-8の方を選択するとファイル先頭に表示されない空文字が入り、誤動作の原因になります。保存するとき以外は、どちらもUTF-8と呼ばれています。

Terapad ではUTF-8N保存ができますが、ほかのエディターを利用していて、UTF-8保存しかできず、先頭の隠し文字が残ってしまう場合は、 FTP転送した後で、Terminalにて、muleを使って、#の前にあるゴミを削除します。

Shift_JISにてコードが重複していた ¥ (Japanese yen) と、バックスラッシュ(back slash) は、UTF-8では区別されます。 Shift_JISにて改行¥nやタブ¥tなどに使われている¥は本来はバックスラッシュなので、バックスラッシュに自動変換されなかった場合は、手動で置換します。

Macでバックスラッシュを書くには英字入力モードで、option+¥

日本のテキストエディターは内部コードにShift_JISを使っているものが主流で、ユニコードでのバックスラッシュが書けないものが多くあります。Macの場合にはKEditが便利です。残念ながら、miは未対応です。

参考リンク:

編集にRDEを使う場合の注意

RDEには優れた色分け機能があり、使いたい人もいると思います。しかし、RDEは、ファイルを保存するときに、不適な改行コードで保存してしまいます。RDEで保存したファイルは、一度Terapadで開いて、改行コード指定保存で保存し直してください。

Terapad で保存し直すのがめんどくさい人のために、改行コード変換ツールを用意しました。.cgiで終わるファイルを探し出して改行コードの変換を行います。
kaigyou_cgi.lzh
使い方:クリックしてダウンロード⇒ダブルクリックで解凍⇒kaigyou_cgi.rbをcgiファイルと同じフォルダ内にコピー⇒ダブルクリック

更新日:2005年02月

© 2004-2005 S.Konno, all rights reserved. [ 質問 ] [ TOP ] [ J2J ] [ 目次 ] [ 次へ>>]