I'm guessing you probably have this solved by now, but just in case...
xml = Builder:: XmlMarkup.new(:target => './inf.xml', :indent => 1)
Here you are setting the target of a Build::XmlMarkup object to the
string './inf.xml' I'm guessing that's not what you really want.
Although, I would guess that Ruby isn't complaining about that since
your target is an object that responds to the << method.
Try something like this:
f = File.new("./inf.xml", "w")
xml = Builder::XmlMarkup.new(:target => f, :indent => 1)