class AwesomeExplain::Insights::MongoidInsights

Attributes

command_subscriber[RW]
metrics[RW]

Public Class Methods

analyze(metrics = [], &block) click to toggle source
# File lib/awesome_explain/insights/mongoid_insights.rb, line 5
def self.analyze(metrics = [], &block)
  instance = new
  instance.init
  instance.metrics = metrics
  block_result = instance.instance_eval(&block)
  instance.tear_down
  block_result unless metrics.size.positive?
end

Public Instance Methods

init() click to toggle source
# File lib/awesome_explain/insights/mongoid_insights.rb, line 14
def init
  command_subscribers = Mongoid.default_client.send(:monitoring).subscribers['Command'] || Mongo::Monitoring::Global.subscribers['Command']
  @command_subscriber = command_subscribers.select do |s|
    s.class == AwesomeExplain::CommandSubscriber
  end.first
  @command_subscriber.clear
  Thread.current['ae_analyze'] = true
  Thread.current['ae_source'] = 'console'
end
tear_down() click to toggle source
# File lib/awesome_explain/insights/mongoid_insights.rb, line 24
def tear_down
  if @command_subscriber.nil?
    puts 'Configure the command subscriber then try again.'
    return
  end

  if @metrics.size.positive?
    result = {}
    @metrics.each do |m|
      result[m] = @command_subscriber.get(m)
    end

    @command_subscriber.clear
    return result
  else
    @command_subscriber.clear
  end
  Thread.current['ae_analyze'] = false
end