Sha256: ca6035a7b134db3ecf4416837efb2c3fcb659213d56e523026f19a2f3218ccee
Contents?: true
Size: 1.61 KB
Versions: 5
Compression:
Stored size: 1.61 KB
Contents
require 'multi_json' require 'rollbar/json/oj' require 'rollbar/json/default' require 'rollbar/language_support' begin require 'oj' rescue LoadError end module Rollbar module JSON # :nodoc: extend self attr_writer :options_module def dump(object) # `basic_socket` plugin addresses the following issue: https://github.com/rollbar/rollbar-gem/issues/845 Rollbar.plugins.get('basic_socket').load_scoped!(true) do with_adapter { MultiJson.dump(object, adapter_options) } end end def load(string) with_adapter { MultiJson.load(string, adapter_options) } end def with_adapter(&block) MultiJson.with_adapter(detect_multi_json_adapter, &block) end def detect_multi_json_adapter options = {} options[:adapter] = :oj if defined?(::Oj) MultiJson.current_adapter(options) end def adapter_options options_module.options end def options_module @options_module ||= find_options_module end def find_options_module module_name = multi_json_adapter_module_name if LanguageSupport.const_defined?(Rollbar::JSON, module_name, false) LanguageSupport.const_get(Rollbar::JSON, module_name, false) else Default end end # MultiJson adapters have this name structure: # "MultiJson::Adapters::{AdapterModule}" # # Ex: MultiJson::Adapters::Oj # Ex: MultiJson::Adapters::JsonGem # # In this method we just get the last module name. def multi_json_adapter_module_name detect_multi_json_adapter.name[/^MultiJson::Adapters::(.*)$/, 1] end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
rollbar-2.20.2 | lib/rollbar/json.rb |
rollbar-2.20.1 | lib/rollbar/json.rb |
rollbar-2.20.0 | lib/rollbar/json.rb |
rollbar-2.19.4 | lib/rollbar/json.rb |
rollbar-2.19.3 | lib/rollbar/json.rb |