Comments (4)
+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.
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.
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.
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)
- Does msgpack_each support nested calls in design principle? HOT 3
- Unpack "end of buffer reached" error on Windows HOT 13
- Extra bytes when loading string HOT 5
- Seg Fault in #load HOT 3
- msgpack.jar seems to be missing in v1.5.5 HOT 7
- Correct way to pack and unpack `Struct` instances. HOT 4
- Packer can overwrite earlier parts of its buffer in version 1.6.0 HOT 10
- jruby: `MessagePack::Unpacker#buffer` is missing
- [BUG] Failed to free an rmem pointer, memory leak? HOT 8
- Compile fails on older toolsets HOT 5
- undefined method `to_msgpack' for BigDecimal (NoMethodError) HOT 4
- Attempt to GC mark already marked object HOT 22
- Pass empty string into MessagePack::Unpacker.feed will stop further feeding valid string in version >= 1.7.0 HOT 1
- Amazon Linux 2 w Ruby 2.6.10 - msgpack requires Ruby version >= 2.5. HOT 1
- Write msgpack to msgpack HOT 2
- Pack as uint16 HOT 1
- Feature request: Time packer HOT 1
- Fix for platforms without compaction support not complete
- 10 extra bytes after the deserialized object HOT 1
- Is Ruby 3.3.0 supported? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msgpack-ruby.