Net::Dav library, in the style of Net::HTTP {Build Status}[https://travis-ci.org/devrandom/net_dav] == Install Installing the gem: gem install net_dav and if you want acceleration for large files (from 4MB/s to 20MB/s in my setup): gem install curb If you're having install issues with nokogiri on Mac OS X read http://wiki.github.com/tenderlove/nokogiri/what-to-do-if-libxml2-is-being-a-jerk == Usage Net::DAV.start("https://localhost.localdomain/xyz/") { |dav| find('.', :recursive => true) do | item | item.content = item.content.gsub(/silly/i, "funny") end end (Note that if you want to use "." to refer to the origin URL, it should end with a slash, otherwise it is assumed that the last component is a file and "." will refer to the parent.) == Documentation RDoc: http://rdoc.info/projects/devrandom/net_dav Wiki: http://wiki.github.com/devrandom/net_dav == Performance This should be threadsafe if you use a different Net::DAV object for each thread. Check out script/multi-test for a multi-threaded application. Installing the +curb+ gem will gain speedup with large files, but currently is much slower doing many small +get+ operations. If your usecase is the latter and you have +curb+ installed, you can disable its use by passing the :curl => false option to Net::DAV::start or Net::DAV::new . == Other Thanks go to Thomas ( https://github.com/thomasfl/ ) and others for their help. Thomas is writing the easy to use https://github.com/thomasfl/open-uri-and-write based on net_dav.