# Webrick-webdav gem: error in number of arguments to get\_handler

**URL:** <https://www.ruby-forum.com/t/webrick-webdav-gem-error-in-number-of-arguments-to-get-handler/169497>\
**Category:** Ruby\
**Created:** [June 4, 2009, 2:11pm UTC](https://www.ruby-forum.com/t/webrick-webdav-gem-error-in-number-of-arguments-to-get-handler/169497 "2009-06-04T14:11:33Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Matt\_Falkenhagen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ed655f/32.png) [@Matt\_Falkenhagen](https://www.ruby-forum.com/u/Matt_Falkenhagen)\
**Post date:** [June 4, 2009, 2:11pm UTC](https://www.ruby-forum.com/t/webrick-webdav-gem-error-in-number-of-arguments-to-get-handler/169497/1 "2009-06-04T14:11:33Z")

</div>

I am getting an error when I try to use a fresh install of the webrick-  
webdav gem on ruby 1.8.7.

Specifically, if I run the following script to start a WEBrick server  
and then send a request for any file (not directory), an  
“ArgumentError: wrong number of arguments (2 for 1)” occurs.

$ cat webdav\_startup.rb  
#!/usr/bin/env ruby

# Adapted from [http://gmarrone.objectblues.net/cgi-bin/wiki/WebDAV\_-](http://gmarrone.objectblues.net/cgi-bin/wiki/WebDAV_-)

# \_Linux\_server%2c\_Mac\_OS\_X\_client

require ‘rubygems’  
require ‘webrick’  
require ‘webrick/httpservlet/webdavhandler’

log = WEBrick::Log.new  
log.level = WEBrick::Log::DEBUG if $DEBUG  
serv = WEBrick::HTTPServer.new({  
:Port =\> 8079,  
:FancyIndexing =\> true,  
:Logger =\> log  
})  
serv.mount(“/”, WEBrick::HTTPServlet::WebDAVHandler, Dir.pwd,  
{:FancyIndexing =\> true})  
trap(:INT){ serv.shutdown }  
serv.start  
$ ./webdav\_startup.rb  
[2009-06-04 20:43:40] INFO WEBrick 1.3.1  
[2009-06-04 20:43:40] INFO ruby 1.8.7 (2008-08-11) [i486-linux]  
[2009-06-04 20:43:40] INFO WEBrick::HTTPServer#start: pid=18264  
port=8079  
[2009-06-04 20:44:06] ERROR ArgumentError: wrong number of arguments  
(2 for 1)  
/usr/lib/ruby/1.8/webrick/httpservlet/filehandler.rb:233:in  
`get_handler' /usr/lib/ruby/1.8/webrick/httpservlet/filehandler.rb:233:in `exec\_handler’  
/usr/lib/ruby/1.8/webrick/httpservlet/filehandler.rb:171:in `do_GET' [...] /usr/lib/ruby/1.8/webrick/server.rb:82:in `start’  
./webdav\_startup.rb:16  
server - - [04/Jun/2009:20:44:06 JST] “GET /.vimrc HTTP/1.1” 500 336

- → /.vimrc  
server - - [04/Jun/2009:20:44:09 JST] “GET / HTTP/1.1” 200 4741
- → /

In webrick-webdav.rb, changing  
def get\_handler(req)  
to  
def get\_handler(req, res)

seems to make everything work fine.

What puzzles me is how this could have been possible. I suspect my  
WEBrick version (and hence ruby version) and webrick-webdav gem  
version are out of sync, as they disagree on the number of arguments  
for get\_handler, but at one time they did since people have used this  
gem before. But you would then think that WEBrick at some point  
changed the number of arguments to get\_handler… yet some quick  
searching yields no clues.

Any ideas what happened here? It would be nice to get the gem to work  
out of the box or at least to document which versions of ruby it can  
be expected to work for.

Thanks,  
Matt
