From b3f9a632531e22d265e724cc87e93e1af9213ba4 Mon Sep 17 00:00:00 2001 From: Holger Just Date: Tue, 6 Jun 2017 20:59:23 +0200 Subject: [PATCH] Allow to define a suitable default encoder per adapter The global default (unless overwritten by an adapter class) is to use the JSON encoder since it's the most versatile and flexible option for a logger today. --- lib/rackstash/adapters/adapter.rb | 9 +++++++++ spec/rackstash/adapters/adapter_spec.rb | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/lib/rackstash/adapters/adapter.rb b/lib/rackstash/adapters/adapter.rb index 36b1bdd..ff03c25 100644 --- a/lib/rackstash/adapters/adapter.rb +++ b/lib/rackstash/adapters/adapter.rb @@ -41,6 +41,15 @@ module Rackstash def initialize(*) end + # Return a new Encoder instance which can be used with the concrete adapter + # If no explicit encoder is defined in a {Flow}, this encoder will be used + # there + # + # @return [#call] an encoder + def default_encoder + Rackstash::Encoders::JSON.new + end + # Close the underlying log device if supported by it. # # This method needs to be overwritten in child classes. By default, this diff --git a/spec/rackstash/adapters/adapter_spec.rb b/spec/rackstash/adapters/adapter_spec.rb index 7833d5c..62547db 100644 --- a/spec/rackstash/adapters/adapter_spec.rb +++ b/spec/rackstash/adapters/adapter_spec.rb @@ -18,6 +18,12 @@ describe Rackstash::Adapters::Adapter do end end + describe '.default_encoder' do + it 'returns an encoder' do + expect(adapter.default_encoder).to respond_to(:encode) + end + end + describe '#close' do it 'does nothing' do expect(adapter.close).to be nil