I'm calling a SOAP service with Savon 2.5.1 like this:
client.call(:operation_name, message: { 'request' => some_hash })
The generated request contains the keys and values from some_hash in the order in which they appear in the hash, rather than the order specified by the WSDL schema. Therefore, depending on the ordering of the hash, the request may or may not be valid.
Savon should refuse to send non-schema-conforming requests. At a minimum, it should raise an error in such a case, but it would be even better if it could reorder the elements based on the order specified in the schema.