Sha256: 2e99f7034af747354e340240fda10dc49cb2eed68193b7eb83fea9ff640288c0
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
module Chronicle module ETL class JSONLoader < Chronicle::ETL::Loader register_connector do |r| r.description = 'json' end setting :serializer setting :output, default: $stdout def start if @config.output == $stdout @output = @config.output else @output = File.open(@config.output, "w") end end def load(record) serialized = serializer.serialize(record) # When dealing with raw data, we can get improperly encoded strings # (eg from sqlite database columns). We force conversion to UTF-8 # before converting into JSON encoded = serialized.transform_values do |value| next value unless value.is_a?(String) value.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?') end @output.puts encoded.to_json end def finish @output.close end private def serializer @config.serializer || Chronicle::ETL::RawSerializer end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
chronicle-etl-0.4.1 | lib/chronicle/etl/loaders/json_loader.rb |