1
0
mirror of https://github.com/meineerde/rackstash.git synced 2026-02-01 01:37:12 +00:00

Add Rackstash::Flow.encoder= as a real setter

This commit is contained in:
Holger Just 2017-10-08 13:11:11 +02:00
parent 469ab5823a
commit e532be28c3
2 changed files with 29 additions and 8 deletions

View File

@ -78,7 +78,7 @@ module Rackstash
# context of `self`.
def initialize(adapter, encoder: nil, filters: [], error_flow: nil, &block)
@adapter = Rackstash::Adapters[adapter]
self.encoder(encoder || @adapter.default_encoder)
self.encoder = encoder || @adapter.default_encoder
@filter_chain = Rackstash::FilterChain.new(filters)
if error_flow.nil?
@ -122,12 +122,24 @@ module Rackstash
#
# @param encoder [#encode, nil] if given, set the flow's encoder to this
# object
# @raise [TypeError] if the given encoder does not respond to the `encode`
# @raise [TypeError] if the given `encoder` does not respond to the `encode`
# method
# @return [#encode] the new encoder if given or the currently defined one
# @return [#encode] the newly set encoder (if given) or the currently
# defined one
# @see #encoder=
def encoder(encoder = nil)
return @encoder if encoder.nil?
self.encoder = encoder
end
# Set the encoder for the log {#adapter}. You can use any object which
# responds to the `encode` method.
#
# @param encoder [#encode] the encoder to use for the log {#adapter}.
# @raise [TypeError] if the given `encoder` does not respond to the `encode`
# method
# @return [#encode] the new `encoder`
def encoder=(encoder)
raise TypeError, 'must provide an encoder' unless encoder.respond_to?(:encode)
@encoder = encoder
end

View File

@ -123,13 +123,22 @@ describe Rackstash::Flow do
# The encoder is persisted and is returned afterwards
expect(flow.encoder).to equal encoder
end
end
describe '#encoder=' do
it 'sets a new encoder' do
encoder = Rackstash::Encoders::JSON.new
flow.encoder = encoder
expect(flow.encoder).to equal encoder
end
it 'rejects invalid encoders' do
expect { flow.encoder :foo }.to raise_error TypeError
expect { flow.encoder 23 }.to raise_error TypeError
expect { flow.encoder true }.to raise_error TypeError
expect { flow.encoder false }.to raise_error TypeError
expect { flow.encoder -> {} }.to raise_error TypeError
expect { flow.encoder = :foo }.to raise_error TypeError
expect { flow.encoder = 23 }.to raise_error TypeError
expect { flow.encoder = true }.to raise_error TypeError
expect { flow.encoder = false }.to raise_error TypeError
expect { flow.encoder = -> {} }.to raise_error TypeError
end
end