module MultiJson::AdapterSelector
def default_adapter
-
(Symbol)- adapter name
Other tags:
- Api: - private
def default_adapter @default_adapter ||= detect_best_adapter end
def detect_best_adapter
-
(Symbol)- adapter name
Other tags:
- Api: - private
def detect_best_adapter loaded_adapter || installable_adapter || fallback_adapter end
def fallback_adapter
-
(Symbol)- the ok_json adapter name
Other tags:
- Api: - private
def fallback_adapter warn_about_fallback unless @default_adapter_warning_shown @default_adapter_warning_shown = true :ok_json end
def find_loader_for(adapter_spec)
-
(Proc, nil)- loader proc if found
Parameters:
-
adapter_spec(Object) -- adapter specification
Other tags:
- Api: - private
def find_loader_for(adapter_spec) klass = adapter_spec.class return LOADERS.fetch(klass) if LOADERS.key?(klass) LOADERS.fetch(Module) if adapter_spec.is_a?(Module) end
def installable_adapter
-
(Symbol, nil)- adapter name if successfully required
Other tags:
- Api: - private
def installable_adapter ::MultiJson::REQUIREMENT_MAP.each_key do |adapter_name| return adapter_name if try_require(adapter_name) end nil end
def load_adapter(adapter_spec)
-
(Class)- the adapter class
Parameters:
-
adapter_spec(Symbol, String, Module, nil) -- adapter specification
Other tags:
- Api: - private
def load_adapter(adapter_spec) loader = find_loader_for(adapter_spec) return loader.call(adapter_spec, self) if loader raise ::LoadError, adapter_spec rescue ::LoadError => e raise AdapterError.build(e) end
def load_adapter_by_name(name)
-
(Class)- the adapter class
Parameters:
-
name(String) -- adapter name
Other tags:
- Api: - private
def load_adapter_by_name(name) normalized = ALIASES.fetch(name, name).downcase require_relative "adapters/#{normalized}" class_name = normalized.split("_").map(&:capitalize).join ::MultiJson::Adapters.const_get(class_name) end
def loaded_adapter
-
(Symbol, nil)- adapter name if found
Other tags:
- Api: - private
def loaded_adapter return :fast_jsonparser if defined?(::FastJsonparser) return :oj if defined?(::Oj) return :yajl if defined?(::Yajl) return :jr_jackson if defined?(::JrJackson) return :json_gem if defined?(::JSON::Ext::Parser) :gson if defined?(::Gson) end
def try_require(adapter_name)
-
(Boolean)- true if require succeeded
Parameters:
-
adapter_name(Symbol) -- adapter to require
Other tags:
- Api: - private
def try_require(adapter_name) require ::MultiJson::REQUIREMENT_MAP.fetch(adapter_name) true rescue ::LoadError false end
def warn_about_fallback
-
(void)-
Other tags:
- Api: - private
def warn_about_fallback Kernel.warn( "[WARNING] MultiJson is using the default adapter (ok_json). " \ "We recommend loading a different JSON library to improve performance." ) end