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

Allow to set a registered encoder in a Flow by name

This commit is contained in:
Holger Just 2018-07-12 18:02:09 +02:00
parent fa1abb5ab5
commit 2c7d897889
2 changed files with 10 additions and 3 deletions

View File

@ -188,6 +188,7 @@ module Rackstash
def encoder(encoder = nil)
return @encoder if encoder.nil?
self.encoder = encoder
@encoder
end
# Set the encoder for the log {#adapter}. You can use any object which
@ -198,8 +199,7 @@ module Rackstash
# method
# @return [#encode] the new `encoder`
def encoder=(encoder)
raise TypeError, 'must provide an encoder' unless encoder.respond_to?(:encode)
@encoder = encoder
@encoder = Rackstash::Encoder.build(encoder)
end
# Get or set a separate {Flow} which is used by this flow to write details

View File

@ -221,8 +221,15 @@ RSpec.describe Rackstash::Flow do
expect(flow.encoder).to equal encoder
end
it 'sets an encoder from a spec' do
flow.encoder = :raw
expect(flow.encoder).to be_a Rackstash::Encoder::Raw
end
it 'rejects invalid encoders' do
expect { flow.encoder = :foo }.to raise_error TypeError
# No registered encoder found
expect { flow.encoder = :invalid }.to raise_error KeyError
expect { flow.encoder = 23 }.to raise_error TypeError
expect { flow.encoder = true }.to raise_error TypeError
expect { flow.encoder = false }.to raise_error TypeError