Windows の ruby WEBrick を試してみた

Windowsrubyでhttpサーバーを起動してみた

以下を参考にコマンドプロンプトから起動してみた
あーありがち

ruby -run -e httpd -- --port 3000 .

最後の「.」も大事!カレントをドキュメントルートにするということ

これだけで、httpサーバー完成!
すげー
これでrubyスクリプトも動くと思って、
http://localhost:3000/test.rb
てな感じで呼び出したら、

コードがそのまま表示されました ははは

rubyのサーバーだからいきなりrubyスクリプト動くと思い込んでました。すいません

httpサーバー用スクリプトを作ればよいらしいので、サーバーのスクリプトはこんな感じにした

require 'webrick'
include WEBrick
module WEBrick::HTTPServlet
  FileHandler.add_handler('rb', CGIHandler)
end
server = WEBrick::HTTPServer.new({
  :BindAddress => '0.0.0.0',
  :Port => '3000',
  :DocumentRoot => 'C:/temp/hoge',
  :CGIInterpreter => 'C:/OLS/ruby-1.9.2-p136-i386-mswin32/bin/ruby.exe'})
Signal.trap(:INT) do
  server.shutdown
end
server.start

「:DocumentRoot」と「:CGIInterpreter」は各自の環境に合わせればよいかと

あとは、「:DocumentRoot」にrubyスクリプトを配置して呼びさせば動く

test.rb

print "Content-type: text/html\n\n"
require "cgi"
cgi = CGI.new
puts cgi["q"]

例:http://localhost:3000/test.rb?q=aaa

実行結果は、単に「aaa」が表示されるだけだが、この事からわかることがたくさんある

  • 「q=」に設定した値がきちんと渡ったこと
  • サーバーからのデータがきちんと届いたこと

これで、サーバー側のコードが簡単にテストできる。うれしい!

しかし、rubyの破壊力というか凄さというか、驚きます。(世間より50周ぐらい周回遅れだろうな)

今回引用機能でコードを表現したけどインデントきかないのね
みんなどうやってるんだろう?

追記
コメントで頂いた情報で、修正しました。
ソースコードを色付けして記述する(シンタックス・ハイライト)