Adicionando atributos a uma tag de entrada com Savon

Você odeia fazer pedidos de sabonete? Sim, eu também, mas pelo menos Savon alivia a dor. Savon , na minha opinião, é facilmente a melhor joia para fazer pedidos de sabonete, mas há um problema que eu gostaria de compartilhar. Ao tentar entrar em contato com um wsdl, o wsdl continuava retornando um erro de que estava procurando uma tag de entrada com um atributo específico. O wsdl estava procurando por algo assim …

<AnAction >="http://apathtosomething.com" />

Levei alguns minutos para descobrir, mas este é o resultado …

soap_client = Savon.client("http://pathtowsdl.com/a.svc?wsdl")

response
= soap_client.request "AnAction" do
http
.headers["soapAction"] = "AnAction"
soap
.input = ["AnAction", {"> => "http://apathtosomething.com"}]
soap
.body = {
"SomeAttribute" => "SomeValue"
}
end

O que lhe daria algo assim …

<env:Envelope>
<env:Body>
<AnAction >="http://apathtosomething.com" />
</env:Body>
</env:Envelope>

Aí está, se você precisa de um atributo na tag de entrada, você sabe como fazê-lo.