def self.initialize!(app)
raise "MiniProfilerRails initialized twice. Set `require: false' for rack-mini-profiler in your Gemfile" if @already_initialized
c = Rack::MiniProfiler.config
c.pre_authorize_cb = lambda { |env|
!Rails.env.test?
}
c.skip_paths ||= []
if serves_static_assets?(app)
c.skip_paths << app.config.assets.prefix
end
if Rails.env.development?
c.skip_schema_queries = true
end
unless Rails.env.development? || Rails.env.test?
c.authorization_mode = :whitelist
end
if Rails.logger
c.logger = Rails.logger
end
base_path = Rails.application.config.paths['tmp'].first rescue "#{Rails.root}/tmp"
tmp = base_path + '/miniprofiler'
c.storage_options = {:path => tmp}
c.storage = Rack::MiniProfiler::FileStore
c.backtrace_remove = Rails.root.to_s + "/"
c.backtrace_includes = [/^\/?(app|config|lib|test)/]
c.skip_schema_queries = (Rails.env.development? || Rails.env.test?)
app.middleware.insert(0, Rack::MiniProfiler)
ActiveSupport.on_load(:action_controller) do
::Rack::MiniProfiler.profile_method(ActionController::Base, :process) {|action| "Executing action: #{action}"}
end
ActiveSupport.on_load(:action_view) do
::Rack::MiniProfiler.profile_method(ActionView::Template, :render) {|x,y| "Rendering: #{@virtual_path}"}
end
@already_initialized = true
end