module AwesomeExplain::Mongodb::Helpers

Public Instance Methods

controller_data() click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 44
def controller_data
  Thread.current['ae_controller_data']
end
db_explain_enabled?(command_name) click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 56
def db_explain_enabled?(command_name)
  return false if DML_COMMANDS.include?(command_name)
  return false if command_name == :getMore
  return true if Thread.current['ae_analyze']
  return false if Rails.const_defined?('Console')
  true
end
db_logging_enbled?() click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 64
def db_logging_enbled?
  return true if Thread.current['ae_analyze']
  return false if Rails.const_defined?('Console')
  true
end
extract_sidekiq_jid(args) click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 48
def extract_sidekiq_jid(args)
  Thread.current[:sidekiq_job].dig('jid')
end
resolve_controller_id() click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 18
def resolve_controller_id
  data = controller_data
  return nil unless data.present?
  AwesomeExplain::Controller.find_or_create_by({
    name: controller_data[:controller],
    action: controller_data[:action],
    path: controller_data[:path],
    params: controller_data[:params].to_json,
    session_id: Thread.current['ae_session_id']
  }).id
end
resolve_sidekiq_class_id() click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 30
def resolve_sidekiq_class_id
  return unless Thread.current[:sidekiq_worker_class].present?
  sidekiq_worker_class_str = Thread.current[:sidekiq_worker_class]
  sidekiq_queue_str = Thread.current[:sidekiq_queue].to_s
  sidekiq_worker = AwesomeExplain::SidekiqWorker.find_or_create_by({
    worker: sidekiq_worker_class_str,
    queue: sidekiq_queue_str,
    jid: extract_sidekiq_jid(Thread.current[:sidekiq_job]),
    params: Thread.current[:sidekiq_job].present? ? Thread.current[:sidekiq_job].to_json : {}
  })

  sidekiq_worker.id
end
resolve_source_name() click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 52
def resolve_source_name
  Thread.current['ae_source'] || DEFAULT_SOURCE_NAME
end
resolve_stracktrace_id(request_id) click to toggle source
# File lib/awesome_explain/mongodb/helpers.rb, line 6
def resolve_stracktrace_id(request_id)
  stacktrace_str = @queries[request_id][:stacktrace]
    .select {|c| c =~ /^#{Rails.root.to_s + '\/(lib|app|db)\/'}/ }
    .map {|c| c.gsub Rails.root.to_s, ''}
    .to_json
  stacktrace = AwesomeExplain::Stacktrace.find_or_create_by({
    stacktrace: stacktrace_str
  })

  stacktrace.id
end