Class: MemoryMonitoring::Rack
- Inherits:
-
Object
- Object
- MemoryMonitoring::Rack
- Defined in:
- lib/memory_monitoring/rack.rb
Overview
中间件 Middleware
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ Rack
constructor
A new instance of Rack.
Constructor Details
#initialize(app) ⇒ Rack
Returns a new instance of Rack.
6 7 8 9 10 |
# File 'lib/memory_monitoring/rack.rb', line 6 def initialize(app) @app = app logger.formatter = SimpleFormatter.new reset # 重置计数器 end |
Instance Method Details
#call(env) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/memory_monitoring/rack.rb', line 12 def call(env) request_uri = env['HTTP_HOST'] + env['PATH_INFO'] @messages = [] # 除静态文件外,读取当前内存 unless request_uri =~ /\/(assets|uploads|images|fonts|js|css)|.(js|css|png|gif|jpg|jpeg|woff|txt|ico|eot|map|svg|ttf)/ @start_rss = current_memory @start_at = Time.now end # 获取输出内容 status, headers, response = @app.call(env) # rescue => e # 出错了 ensure unless .empty? @level = :error if status.nil? || status.between?(400, 600) logger.send @level, (@messages + [ request_uri ]).join("\t") unless response.nil? body = (response.respond_to?(:body) ? response.body : response).first injector = Injector.new(@messages) return [status, headers, [injector.injection(env['HTTP_ACCEPT'], body)]] end end end |