mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 19:46:55 +08:00
PERF: Use Oj for serializing JSON. (#7780)
This commit is contained in:
parent
f4e354afff
commit
b4df8c5466
|
@ -1,4 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
Oj.optimize_rails
|
||||
|
||||
# Not sure why it's not using this by default!
|
||||
MultiJson.engine = :oj
|
||||
|
|
19
spec/integrity/oj_spec.rb
Normal file
19
spec/integrity/oj_spec.rb
Normal file
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "rails_helper"
|
||||
|
||||
describe 'Oj' do
|
||||
it "is enabled" do
|
||||
classes = Set.new
|
||||
tracer = TracePoint.new(:c_call) { |tp| classes << tp.defined_class }
|
||||
tracer.enable { ActiveModel::ArraySerializer.new([1, 2, 3]).to_json }
|
||||
|
||||
expect(classes).to include(Oj::Rails::Encoder)
|
||||
end
|
||||
|
||||
it "escapes HTML entities the same as ActiveSupport" do
|
||||
expect("<b>hello</b>".to_json).to eq("\"\\u003cb\\u003ehello\\u003c/b\\u003e\"")
|
||||
expect('"hello world"'.to_json). to eq('"\"hello world\""')
|
||||
expect("\u2028\u2029><&".to_json).to eq('"\u2028\u2029\u003e\u003c\u0026"')
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user