Builder is a neat piece of kit but, like most sane libraries, wasn’t designed around the brain-damage that is Business-dialect XML(chock full of custom namespaces and tags devoted solely to attributes).
Builder’s docs seem to imply that a namespaced tag always needs to be in block form:
xml.bqcm :UselessMetadata {|n| n<< "flue"}
or
xml.bqcm :UselessMetadata do xml.text!("flue") end
But you'll end up with wonky indenting because Builder is sensibly expecting that you should take care of the whitespace yourself when using this form:
<bqcm:UselessMetadata>
flue
</bqcm:UselessMetadata>
The clean way to do it is giving the symbol as the first argument:
xml.bqcm(:UselessMetadata, "flue")
which provides:
<bqcm:UselessMetadata>flue</bqcm:UselessMetadata>
EDIT(2:18pm)
"But what if I have attributes AND a simple text value?"
Just make sure the attributes are sent in an explicit hash as the second parameter:
xml.bqcm(:UselessMetadata, {:QuestionableAttribute=>"chimney"}, "flue")
"I still want to send my text like I was doing, and I want proper indenting NOW NOW NOW"
Fair enough:
xml.bqcm :UselessMetadata do
xml.__send__ :_indent
xml.text!("flue")
xml.__send__ :_newline
end