kgiszczak / shale

Shale is a Ruby object mapper and serializer for JSON, YAML, TOML, CSV and XML. It allows you to parse JSON, YAML, TOML, CSV and XML data and convert it into Ruby data structures, as well as serialize data structures into JSON, YAML, TOML, CSV or XML.
https://shalerb.org/
MIT License
618 stars 19 forks source link

Date and Time serializations broken #7

Closed shannryan closed 1 year ago

shannryan commented 1 year ago

Hi. I think 18ebdce0c0fbe5b2bd804cd4cc5cee0d3370b4fb broke serializations of Time and Date classes

E.g. Date

irb(main):006:0> require 'shale'
=> true
irb(main):007:1* class Person < Shale::Mapper
irb(main):008:1*   attribute :dob, Shale::Type::Date
irb(main):009:0> end
=> :dob=
irb(main):010:0> p = Person.new(dob: '2022-08-12')
=> #<Person:0x00007fba055250f0 @dob=#<Date: 2022-08-12 ((2459804j,0s,0n),+0s,2299161j)>>
irb(main):011:0> p.to_json
Traceback (most recent call last):
        25: from /Users/shan/.rbenv/versions/2.7.1/bin/irb:23:in `<main>'                    
        24: from /Users/shan/.rbenv/versions/2.7.1/bin/irb:23:in `load'                      
        23: from /Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/irb-1.4.1/exe/irb:11:in `<top (required)>'
         6: from (irb):11:in `<main>'                                                               
         5: from /Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/shale-0.7.0/lib/shale/type/complex.rb:705:in `to_json'
         4: from /Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/shale-0.7.0/lib/shale/type/complex.rb:210:in `to_json'
         3: from /Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/shale-0.7.0/lib/shale/type/complex.rb:118:in `as_json'
         2: from /Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/shale-0.7.0/lib/shale/type/complex.rb:118:in `each_value'
         1: from /Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/shale-0.7.0/lib/shale/type/complex.rb:159:in `block in as_json'
/Users/shan/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/shale-0.7.0/lib/shale/type/date.rb:35:in `as_json': wrong number of arguments (given 2, expected 1) (ArgumentError)
kgiszczak commented 1 year ago

Hi, thanks for reporting it, the fix is ready: https://www.shalerb.org/releases.html