class TCellAgent::MyRailtie

Public Instance Methods

find_by_sql(*args) click to toggle source
# File lib/tcell_agent/rails/dlp.rb, line 262
def find_by_sql(*args)
  results = tcell_find_by_sql(*args)

  TCellAgent::Instrumentation.safe_block('Running DLP on find_by_sql') do
    TCellAgent::DLP.instrument_find_by_sql(results)
  end

  results
end
pluck(*column_names) click to toggle source
# File lib/tcell_agent/rails/dlp.rb, line 248
def pluck(*column_names)
  results = tcell_pluck(*column_names)

  TCellAgent::Instrumentation.safe_block('Running DLP on pluck') do
    TCellAgent::DLP.instrument_pluck(results, column_names, model)
  end

  results
end
translate_exception(exception, message) click to toggle source
# File lib/tcell_agent/rails/dlp.rb, line 218
def translate_exception(exception, message)
  result = tcell_translate_exception(exception, message)

  TCellAgent::Instrumentation.safe_block('Set sql_exception_detected in meta') do
    appfirewall_policy = TCellAgent.policy(TCellAgent::PolicyTypes::APPSENSOR)
    if appfirewall_policy.enabled
      request_env = TCellAgent::Instrumentation::Rails::Middleware::ContextMiddleware::THREADS.fetch(
        Thread.current.object_id, {}
      )
      tcell_data = request_env[TCellAgent::Instrumentation::TCELL_ID]
      if tcell_data && result.is_a?(ActiveRecord::StatementInvalid)
        if message.is_a? Hash
          tcell_data.sql_exceptions.push(
            { 'exception_name' => result.class.name, 'exception_payload' => message[:message] }
          )
        else
          tcell_data.sql_exceptions.push(
            { 'exception_name' => result.class.name, 'exception_payload' => message }
          )
        end
      end
    end
  end

  result
end