Added rack-lineprof for development
This can be used to measure the time (roughly) spent on a per line basis. This can also be used to measure timings for views, for example by adding the following to a URL: ?lineprof=app/views/projects/notes/_note rack-lineprof is only enabled when: 1. The application runs in development mode 2. The used Ruby is MRI 3. The environment variable ENABLE_LINEPROF is set to a non-empty value
This commit is contained in:
parent
7971ed5dac
commit
d4832b0341
1
Gemfile
1
Gemfile
|
|
@ -226,6 +226,7 @@ group :development do
|
|||
gem 'rerun', '~> 0.10.0'
|
||||
gem 'bullet', require: false
|
||||
gem 'active_record_query_trace', require: false
|
||||
gem 'rack-lineprof', platform: :mri
|
||||
|
||||
# Better errors handler
|
||||
gem 'better_errors', '~> 1.0.1'
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ GEM
|
|||
daemons (1.2.3)
|
||||
database_cleaner (1.4.1)
|
||||
debug_inspector (0.0.2)
|
||||
debugger-ruby_core_source (1.3.8)
|
||||
default_value_for (3.0.1)
|
||||
activerecord (>= 3.2.0, < 5.0)
|
||||
descendants_tracker (0.0.4)
|
||||
|
|
@ -506,6 +507,10 @@ GEM
|
|||
rack-attack (4.3.0)
|
||||
rack
|
||||
rack-cors (0.4.0)
|
||||
rack-lineprof (0.0.3)
|
||||
rack (~> 1.5)
|
||||
rblineprof (~> 0.3.6)
|
||||
term-ansicolor (~> 1.3)
|
||||
rack-mini-profiler (0.9.7)
|
||||
rack (>= 1.1.3)
|
||||
rack-mount (0.8.3)
|
||||
|
|
@ -544,6 +549,8 @@ GEM
|
|||
rb-fsevent (0.9.5)
|
||||
rb-inotify (0.9.5)
|
||||
ffi (>= 0.5.0)
|
||||
rblineprof (0.3.6)
|
||||
debugger-ruby_core_source (~> 1.3)
|
||||
rbvmomi (1.8.2)
|
||||
builder
|
||||
nokogiri (>= 1.4.1)
|
||||
|
|
@ -889,6 +896,7 @@ DEPENDENCIES
|
|||
quiet_assets (~> 1.0.2)
|
||||
rack-attack (~> 4.3.0)
|
||||
rack-cors (~> 0.4.0)
|
||||
rack-lineprof
|
||||
rack-mini-profiler (~> 0.9.0)
|
||||
rack-oauth2 (~> 1.0.5)
|
||||
rails (= 4.1.12)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ Gitlab::Application.configure do
|
|||
|
||||
# Expands the lines which load the assets
|
||||
# config.assets.debug = true
|
||||
|
||||
|
||||
# Adds additional error checking when serving assets at runtime.
|
||||
# Checks for improperly declared sprockets dependencies.
|
||||
# Raises helpful error messages.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
# The default colors of rack-lineprof can be very hard to look at in terminals
|
||||
# with darker backgrounds. This patch tweaks the colors a bit so the output is
|
||||
# actually readable.
|
||||
if Rails.env.development? and RUBY_ENGINE == 'ruby' and ENV['ENABLE_LINEPROF']
|
||||
Gitlab::Application.config.middleware.use(Rack::Lineprof)
|
||||
|
||||
module Rack
|
||||
class Lineprof
|
||||
class Sample < Rack::Lineprof::Sample.superclass
|
||||
def format(*)
|
||||
formatted = if level == CONTEXT
|
||||
sprintf " | % 3i %s", line, code
|
||||
else
|
||||
sprintf "% 8.1fms %5i | % 3i %s", ms, calls, line, code
|
||||
end
|
||||
|
||||
case level
|
||||
when CRITICAL
|
||||
color.red formatted
|
||||
when WARNING
|
||||
color.yellow formatted
|
||||
when NOMINAL
|
||||
color.white formatted
|
||||
else # CONTEXT
|
||||
formatted
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue