Sha256: 5b5adba92abb52a143e596499dea60289710547d97631abcabcb517b81a0ad2f

Contents?: true

Size: 1.25 KB

Versions: 24

Compression:

Stored size: 1.25 KB

Contents

module Middleman
  module Profiling
    class << self
      # The profiler instance. There can only be one!
      attr_writer :profiler
      def profiler
        @profiler ||= NullProfiler.new
      end

      # Start the profiler
      def start
        profiler.start
      end

      # Stop the profiler and generate a report. Make sure to call start first
      def report(report_name)
        profiler.report(report_name)
      end
    end

    # A profiler that does nothing. The default.
    class NullProfiler
      def start; end

      def report(_); end
    end

    # A profiler that uses ruby-prof
    class RubyProfProfiler
      def initialize
        require 'ruby-prof'
      rescue LoadError
        raise "To use the --profile option, you must add the 'ruby-prof' gem to your Gemfile"
      end

      def start
        RubyProf.start
      end

      def report(report_name)
        result = RubyProf.stop

        printer = RubyProf::GraphHtmlPrinter.new(result)
        outfile = File.join('profile', report_name)
        outfile = (outfile + '.html') unless outfile.end_with? '.html'
        FileUtils.mkdir_p(File.dirname(outfile))
        File.open(outfile, 'w') do |f|
          printer.print(f, min_percent: 1)
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
middleman-core-4.5.1 lib/middleman-core/profiling.rb
middleman-core-4.5.0 lib/middleman-core/profiling.rb
middleman-core-4.4.3 lib/middleman-core/profiling.rb
middleman-core-4.4.2 lib/middleman-core/profiling.rb
middleman-core-4.4.0 lib/middleman-core/profiling.rb
middleman-core-4.3.11 lib/middleman-core/profiling.rb
middleman-core-4.3.10 lib/middleman-core/profiling.rb
middleman-core-4.3.8 lib/middleman-core/profiling.rb
middleman-core-4.3.7 lib/middleman-core/profiling.rb
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.3.3/lib/middleman-core/profiling.rb
middleman-core-4.3.6 lib/middleman-core/profiling.rb
middleman-core-4.3.5 lib/middleman-core/profiling.rb
middleman-core-5.0.0.rc.1 lib/middleman-core/profiling.rb
middleman-core-4.3.4 lib/middleman-core/profiling.rb
middleman-core-4.3.3 lib/middleman-core/profiling.rb
middleman-core-4.3.2 lib/middleman-core/profiling.rb
middleman-core-4.3.1 lib/middleman-core/profiling.rb
middleman-core-4.3.0 lib/middleman-core/profiling.rb
middleman-core-4.3.0.rc.4 lib/middleman-core/profiling.rb
middleman-core-4.3.0.rc.3 lib/middleman-core/profiling.rb