Coder Social home page Coder Social logo

Comments (4)

ndbroadbent avatar ndbroadbent commented on May 26, 2024

+1, this just caused a bug in our sessions code that was really hard to track down. Other people have come across this too, see: https://github.com/fabrik42/acts_as_api/wiki/Support-custom-response-formats-(example-for-messagepack)

Finally, because MessagePack doesn't come with the ability to serialize a TimeWithZone, you need to monkey patch it in:

module ActiveSupport
  class TimeWithZone
   def to_msgpack(out='')
     self.to_s.to_msgpack(out)
   end
  end
end

I'll submit a pull request to automatically patch ActiveSupport::TimeWithZone if it is available.

from msgpack-ruby.

ndbroadbent avatar ndbroadbent commented on May 26, 2024

Here's a little PoC, if you have a Rails console open:

pry(main)> time = Time.zone.now
#=> Thu, 21 Aug 2014 15:19:26 PDT -07:00

pry(main)> packed_time = MessagePack.pack(time)
#=> "\xB72014-08-21 15:19:26 UTC"

pry(main)> unpacked_time = MessagePack.unpack(packed_time)
#=> "2014-08-21 15:19:26 UTC"

pry(main)> Time.parse(unpacked_time)
#=> 2014-08-21 15:19:26 UTC

pry(main)> Time.zone.parse(unpacked_time)
#=> Thu, 21 Aug 2014 08:19:26 PDT -07:00

from msgpack-ruby.

cosmo0920 avatar cosmo0920 commented on May 26, 2024

Time serialization/deserialization is not supported current msgpack.
This feature will be supported by ext types of version v0.7.x.

Related to PR #90 discussions.

from msgpack-ruby.

tagomoris avatar tagomoris commented on May 26, 2024

Now msgpack-ruby v0.7 supports ext types. So you can serialize Time (or Date) by code like below:

MessagePack::DefaultFactory.register_type(0x01, Time, packer: ->(t){ t.to_i.to_msgpack }, unpacker: ->(d){ Time.at(MessagePack.unpack(d)) })
t = Time.now
packed_time = MessagePack.pack(t)
MessagePack.unpack(packed_time) #=> 2015-11-08 13:33:59 +0900

from msgpack-ruby.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.