Sha256: 32ceb3633afb808c7262af0a42283716fd35baef0d7c7fadfe4ad23b426cd5e6

Contents?: true

Size: 927 Bytes

Versions: 1

Compression:

Stored size: 927 Bytes

Contents

# Class that can subscribe to and log any view events
module Footnotes

  def self.view_subscriber
    @view_subscriber ||= ViewSubscriber.new
  end

  class ViewSubscriber < ActiveSupport::LogSubscriber
    attr_reader :events

    def initialize
      reset!
      super
    end

    def reset!
      @events = []
    end

    def render_template(event)
      events << event.dup
    end
    alias :render_partial :render_template
    alias :render_collection :render_template

    def partials
      events.select{ |e| e.name =~ /render_partial/ }
    end

    def partial_time
      partials.map{|p| p.duration }.sum
    end

    def page
      events.find{ |e| e.name =~ /render_template/ }
    end

    def view
      page && page.payload[:identifier]
    end

    def view_name
      view && view.gsub(Rails.root.join("app/views/").to_s, '')
    end

    def layout
      page && page.payload[:layout]
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails3-footnotes-4.0.0.pre.10 lib/rails-footnotes/view_subscriber.rb