Class: Chronos::Core::SafeSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/chronos/core/safe_serializer.rb

Overview

Converts bounded Ruby structures to values accepted by JSON.generate.

Examples:

serializer.call(:status => :ok) #=> {"status"=>"ok"}

Constant Summary collapse

DEFAULTS =
{
  :max_depth => 10,
  :max_keys => 100,
  :max_items => 100,
  :max_string_bytes => 8192,
  :max_nodes => 2_000
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ SafeSerializer

Returns a new instance of SafeSerializer.



24
25
26
# File 'lib/chronos/core/safe_serializer.rb', line 24

def initialize(options = {})
  @options = DEFAULTS.merge(options).freeze
end

Instance Method Details

#call(value, overrides = {}) ⇒ Object



28
29
30
31
32
33
# File 'lib/chronos/core/safe_serializer.rb', line 28

def call(value, overrides = {})
  settings = @options.merge(overrides)
  normalize(value, 0, {}, {:nodes => 0}, settings)
rescue StandardError
  "<unserializable value>"
end