From cdb62b6c967eefa0686eb73cf28ee75e1da30a20 Mon Sep 17 00:00:00 2001 From: Shuhei Kitagawa Date: Wed, 18 Apr 2018 19:28:49 +0900 Subject: [PATCH] Clean up multi_to_json --- lib/fast_jsonapi/multi_to_json.rb | 37 ++++++++++++++----------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/lib/fast_jsonapi/multi_to_json.rb b/lib/fast_jsonapi/multi_to_json.rb index 108579e4..6d8f7063 100644 --- a/lib/fast_jsonapi/multi_to_json.rb +++ b/lib/fast_jsonapi/multi_to_json.rb @@ -43,9 +43,20 @@ def rescue end end - def self.logger(device=nil) - return @logger = Logger.new(device) if device - @logger ||= Logger.new(IO::NULL) + def self.to_json(object) + _fast_to_json(object) + rescue NameError + define_to_json(FastJsonapi::MultiToJson) + _fast_to_json(object) + end + + private + + def self.define_to_json(receiver) + cl = caller_locations[0] + method_body = to_json_method + logger.debug { "Defining #{receiver}._fast_to_json as #{method_body.inspect}" } + receiver.instance_eval method_body, cl.absolute_path, cl.lineno end # Encoder-compatible with default MultiJSON adapters and defaults @@ -76,23 +87,9 @@ def self.to_json_method encode_method << "\nend" end - def self.to_json(object) - _fast_to_json(object) - rescue NameError - define_to_json(FastJsonapi::MultiToJson) - _fast_to_json(object) - end - - def self.define_to_json(receiver) - cl = caller_locations[0] - method_body = to_json_method - logger.debug { "Defining #{receiver}._fast_to_json as #{method_body.inspect}" } - receiver.instance_eval method_body, cl.absolute_path, cl.lineno - end - - def self.reset_to_json! - undef :_fast_to_json if method_defined?(:_fast_to_json) - logger.debug { "Undefining #{receiver}._fast_to_json" } + def self.logger(device=nil) + return @logger = Logger.new(device) if device + @logger ||= Logger.new(IO::NULL) end end end