Sha256: 583f8f6ed2289b7e6722574851291108142fafa8b27155ffd22ae07af742227a

Contents?: true

Size: 1.76 KB

Versions: 13

Compression:

Stored size: 1.76 KB

Contents

# encoding: utf-8

require 'tunemygc/subscriber'

module TuneMyGc
  class StartRequestSubscriber < Subscriber
    def start(name, id, payload)
      TuneMyGc.processing_started({:controller => payload[:controller], :action => payload[:action]})
    end

    # Rails 3
    def call(*args)
      event = ActiveSupport::Notifications::Event.new(*args)
      TuneMyGc.processing_started({:controller => event.payload[:controller], :action => event.payload[:action]})
    end
  end

  class EndRequestSubscriber < Subscriber
    def finish(name, id, payload)
      TuneMyGc.processing_ended({:controller => payload[:controller], :action => payload[:action]})
    end

    # Rails 3
    def call(*args)
      event = ActiveSupport::Notifications::Event.new(*args)
      TuneMyGc.processing_ended({:controller => event.payload[:controller], :action => event.payload[:action]})
    end
  end
end

module TuneMyGc
  module Spies
    class ActionController < TuneMyGc::Spies::Base
      attr_reader :subscriptions

      def initialize
        super
        @subscriptions = []
      end

      def install
        subscription(/^start_processing.action_controller$/, TuneMyGc::StartRequestSubscriber.new)
        subscription(/^process_action.action_controller$/, TuneMyGc::EndRequestSubscriber.new)
        TuneMyGc.log "hooked: action_controller"
      end

      def uninstall
        TuneMyGc.uninstall_gc_tracepoint
        TuneMyGc.log "uninstalled GC tracepoint"
        @subscriptions.each{|s| ActiveSupport::Notifications.unsubscribe(s) }
        @subscriptions.clear
        TuneMyGc.log "uninstalled action_controller spy"
      end

      private
      def subscription(pattern, handler)
        @subscriptions << ActiveSupport::Notifications.subscribe(pattern, handler)
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
tunemygc-1.0.65 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.64 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.63 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.62 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.61 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.60 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.59 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.58 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.57 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.56 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.55 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.54 lib/tunemygc/spies/action_controller.rb
tunemygc-1.0.53 lib/tunemygc/spies/action_controller.rb