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