module FirehoseIntegration::KinesisEvent
Constants
- MAX_REDSHIFT_STRING_SIZE
Public Instance Methods
escape_string_for_redshift(field)
click to toggle source
# File lib/firehose_integration/models/concerns/kinesis_event.rb, line 50 def escape_string_for_redshift field return field unless field.is_a? String output = field { '\n' => '\\n', '\r' => '\\r', '\|' => '|' }.each do |pattern, replacement| output = output.gsub(Regexp.new(pattern), replacement) end output.force_encoding("utf-8") end
massage_data_for_redshift(field)
click to toggle source
# File lib/firehose_integration/models/concerns/kinesis_event.rb, line 40 def massage_data_for_redshift field if field.is_a? String output = escape_string_for_redshift(field).truncate(MAX_REDSHIFT_STRING_SIZE) Rails.logger.info "Redshift data has been truncated due to length: #{output.truncate(50)}" if output.size == MAX_REDSHIFT_STRING_SIZE output else field end end
prepare_for_redshift(field)
click to toggle source
# File lib/firehose_integration/models/concerns/kinesis_event.rb, line 28 def prepare_for_redshift(field) if field.present? if field.is_a? Array output = [] field.each do |f| output << massage_data_for_redshift(f) end return output.join("|") end end end
send_kinesis_event()
click to toggle source
# File lib/firehose_integration/models/concerns/kinesis_event.rb, line 64 def send_kinesis_event KinesisJob.perform_later(self.class.kinesis_stream_name, self.to_kinesis) self.kinesis_extra_serialization if self.methods.include? :kinesis_extra_serialization end
to_kinesis()
click to toggle source
# File lib/firehose_integration/models/concerns/kinesis_event.rb, line 24 def to_kinesis raise(NoMethodError, "Model must define instance method to_kinesis") end