Sha256: e856b0dc3e29e20bfeae105a34508626a66041ac75e634be9e11cae14fd61380

Contents?: true

Size: 1.88 KB

Versions: 6

Compression:

Stored size: 1.88 KB

Contents

require "#{File.dirname(__FILE__)}/log_note"

module Footnotes
  module Notes
    class PartialsNote < LogNote
      def initialize(controller)
        super
        @controller = controller
      end
      def row
        :edit
      end
      def title
        "Partials (#{partials.size})"
      end
      def content
        rows = partials.map do |filename|
          href = Footnotes::Filter.prefix(filename,1,1)
          shortened_name=filename.gsub(File.join(Rails.root,"app/views/"),"")
          [%{<a href="#{href}">#{shortened_name}</a>},"#{@partial_times[filename].sum}ms",@partial_counts[filename]]
        end
        mount_table(rows.unshift(%w(Partial Time Count)), :summary => "Partials for #{title}")
      end

      protected
        #Generate a list of partials that were rendered, also build up render times and counts.
        #This is memoized so we can use its information in the title easily.
        def partials
          @partials ||= begin
            partials = []
            @partial_counts = {}
            @partial_times = {}
            log_lines = log
            log_lines.split("\n").each do |line|
              if line =~ /Rendered (\S*) \(([\d\.]+)\S*?\)/
                partial = $1
                @controller.view_paths.each do |view_path|
                  path = File.join(view_path, "#{partial}*")
                  files = Dir.glob(path)
                  for file in files
                    #TODO figure out what format got rendered if theres multiple
                    @partial_times[file] ||= []
                    @partial_times[file] << $2.to_f
                    @partial_counts[file] ||= 0
                    @partial_counts[file] += 1
                    partials << file unless partials.include?(file)
                  end
                end
              end
            end
            partials.reverse
          end
        end
    end    
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
rails-footnotes-3.7.1 lib/rails-footnotes/notes/partials_note.rb
rails-footnotes-3.7.1.pre lib/rails-footnotes/notes/partials_note.rb
rails-footnotes-3.7.0 lib/rails-footnotes/notes/partials_note.rb
rails3-footnotes-4.0.0.pre.2 lib/rails-footnotes/notes/partials_note.rb
rails3-footnotes-4.0.0.pre.1 lib/rails-footnotes/notes/partials_note.rb
rails3-footnotes-4.0.0.pre lib/rails-footnotes/notes/partials_note.rb