Subscribed unsubscribe Subscribe Subscribe

k-yamadaのブログ

プログラミングのメモ

参考になるrubyのオープンソースコード

Ruby/勉強用のお手本になるソースコード
http://tobysoft.net/wiki/index.php?Ruby%2F%CA%D9%B6%AF%CD%D1%A4%CE%A4%AA%BC%EA%CB%DC%A4%CB%A4%CA%A4%EB%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9

とりあえず、Webrickのソースで勉強しようと思う。
フォルダ構成とか、loggerのうまい使い方とかに悩んでたが、Webrickのソースはその点参考になりそう。

Webrickのフォルダ構成

$ tree webrick/
webrick/
├── accesslog.rb
├── cgi.rb
├── compat.rb
├── config.rb
├── cookie.rb
├── htmlutils.rb
├── httpauth
│   ├── authenticator.rb
│   ├── basicauth.rb
│   ├── digestauth.rb
│   ├── htdigest.rb
│   ├── htgroup.rb
│   ├── htpasswd.rb
│   └── userdb.rb
├── httpauth.rb
├── httpproxy.rb
├── httprequest.rb
├── httpresponse.rb
├── https.rb
├── httpserver.rb
├── httpservlet
│   ├── abstract.rb
│   ├── cgi_runner.rb
│   ├── cgihandler.rb
│   ├── erbhandler.rb
│   ├── filehandler.rb
│   └── prochandler.rb
├── httpservlet.rb
├── httpstatus.rb
├── httputils.rb
├── httpversion.rb
├── log.rb
├── server.rb
├── ssl.rb
├── utils.rb
└── version.rb

Loggerの使い方
webrick/server.rb

      @config[:Logger] ||= Log::new
      @logger = @config[:Logger]

      @tokens = SizedQueue.new(@config[:MaxClients])
      @config[:MaxClients].times{ @tokens.push(nil) }

      webrickv = WEBrick::VERSION
      rubyv = "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
      @logger.info("WEBrick #{webrickv}")
      @logger.info("ruby #{rubyv}")

ちなみに、ソースコードの場所がわからない場合は、以下のコマンドで確認出来る。

$gem which Webrick
/Users/kyamada/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/Webrick.rb