(ご容赦ください。これがシバンとウィンドウに到達することを約束します。)
私は、最も単純なWEBRickサーバーをまとめました。
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port=>2000, :DocumentRoot=>Dir::pwd)
s.start
これ以上簡単なことはありません。この基本的なサーバーは、http 接続 (firefox、インターネット エクスプローダー、wget、TELENT) を受け入れ、静的ドキュメントをフェッチするだけであれば、それらを適切に処理します。ただし、ディレクトリ内のファイルの 1 つに .cgi 拡張子を設定すると、500 が返され、サーバーのターミナルに次のように表示されます。
ERROR CGIHandler: c:/rubyCGI/test.cgi:
C:/...[snip]...webrick/httpservlet/cgi_runner.rb:45: in 'exec': Exec format error - ...[snip]...
cgi_runner.rb の 45 行目で行われていることを模倣するために、コマンド ラインでいくつかのことを行いました。
c:\>ruby
exec "c:/rubyCGI/test.cgi"
^Z
(same error erupts)
c:\>ruby
exec "ruby c:/rubyCGI/test.cgi"
^Z
Content-type: text/html
Mares eat oats and does eat oats and I'll be home for Christmas.
明らかに、WEBrick は Windows への着陸を許可されていません。あなたのいつもの企業パラノイアの頭痛の種は、私が webrick を変更することを妨げているので、OS (Windows) によって認識される c:/rubyCGI/test.cgi のシバン表記を取得できますか?使用する? すべての .cgi ファイルを ruby に関連付けることができましたが、長期的には制限されます。
更新: これを投稿して以来、Ruby から CGI Web サーバーを実行することはまったくできないかもしれないと思いました。ruby は fork をサポートしていません。プロセスをフォークする機能がないため、cgi サーバーは各 cgi スクリプトを一度に 1 つずつ実行する必要があり、最初のリクエストが完了するまですべての同時リクエストを無視していました。これは一部の人には受け入れられるかもしれませんが、私のアプリケーションでは機能しません。とはいえ、最初の質問に対する答え、つまり窓の下でシバンを動かすという質問にはまだ非常に興味があります。