From 80cef251c8daae013178b090a1d291f0b6c906ca Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 23 Feb 2017 15:19:44 -0600 Subject: [PATCH] Fix deep compact --- lib/timber/events/http_server_request.rb | 5 +---- lib/timber/log_entry.rb | 4 ++-- lib/timber/util/hash.rb | 18 +++++++++++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/timber/events/http_server_request.rb b/lib/timber/events/http_server_request.rb index 71d52940..876d6b56 100644 --- a/lib/timber/events/http_server_request.rb +++ b/lib/timber/events/http_server_request.rb @@ -29,10 +29,7 @@ def to_hash alias to_h to_hash def as_json(_options = {}) - hash = to_hash - hash[:headers] = Util::Hash.compact(hash[:headers]) - hash = Util::Hash.compact(hash) - {:server_side_app => {:http_request => hash}} + {:server_side_app => {:http_request => to_hash}} end def message diff --git a/lib/timber/log_entry.rb b/lib/timber/log_entry.rb index cb1d35c6..768bbd78 100644 --- a/lib/timber/log_entry.rb +++ b/lib/timber/log_entry.rb @@ -39,7 +39,7 @@ def as_json(options = {}) :time_ms => time_ms} if !event.nil? - hash[:event] = event + hash[:event] = event.as_json end if !context_snapshot.nil? && context_snapshot.length > 0 @@ -60,7 +60,7 @@ def as_json(options = {}) hash end - Util::Hash.compact(hash) + Util::Hash.deep_compact(hash) end def to_json(options = {}) diff --git a/lib/timber/util/hash.rb b/lib/timber/util/hash.rb index 3a15ebb5..344511f9 100644 --- a/lib/timber/util/hash.rb +++ b/lib/timber/util/hash.rb @@ -4,10 +4,22 @@ module Util module Hash extend self - def compact(hash) - hash.select do |k, v| - v != nil && v != {} && v != [] + def deep_compact(hash) + new_hash = {} + + hash.each do |k, v| + v = if v.is_a?(::Hash) + deep_compact(v) + else + v + end + + if v != nil && v != "" && v != {} && v != [] + new_hash[k] = v + end end + + new_hash end end end