Recently at Everlane I ran into some interesting performance quirks with how we handled JSON serialization: wherever we called
.to_json on something—even a small something—things got really slow.
We have the Oj gem in use for JSON (de)serialization, so I thought things should be fast, but after some digging it turned out that the
.to_json method on objects still used the plain old JSON gem through
Thankfully, it’s easy to switch out that encoder for a faster one:
# config/initializers/json_encoding.rb module ActiveSupport::JSON::Encoding class Oj < JSONGemEncoder def encode value ::Oj.dump(value.as_json) end end end ActiveSupport.json_encoder = ActiveSupport::JSON::Encoding::Oj
Now go forth and have all your JSON encoding be swift!