前田です。

NAKAMURA, Hiroshi wrote:
> バグでした。前田さんのおっしゃる通り、mappingが間違っており
> (DateはSOAP::DateTimeにしちゃだめ)、かつ、SOAP Data Model (SOAP::*)にお
> けるnormalizeが間違ってました。内部では全部DateTimeで持つんですが、間違
> えてif obj.is_a?(Date)とか書いてました。if obj.is_a?(DateTime)でないとい
> けなかった。(DateTime is_a? Date なので、これまでDate以外では問題なく動
> いてました)。
> 
> http://dev.ctor.org/soap4r/changeset/1543

パッチを適用したところうまくいきました。ありがとうございます。

 [::Date,          ::SOAP::SOAPDateTime,   DateTimeFactory],

の方ではなく、

 [::Date,         ::SOAP::SOAPDate,       DateTimeFactory],

の方が削除されているようですが、これはこういうものなんです?
あと、SOAPBaseMapの方にも同じような部分がありますが、問題ない
でしょうか。

それから、内部的にはDateTimeで持つとのことですが、

$ ruby -r date -r soap/mapping -e 'xd =
SOAP::Mapping.obj2soap(Date.today); p xd.class; d =
SOAP::Mapping.soap2obj(xd); p d.class'
SOAP::SOAPDate
DateTime

のように、SOAP::SOAPDate -> DateTimeになるのは意図的ということ
でしょうか。
このためか、Railsでxsd:dateな値を受け取るとDateTimeに変換されて
しまうのですが、これはRails側で対処するべきなんですかね。

-- 
前田 修吾
ちゃんとコードを読んでないので全般的によくわかってないです。すみません。