Class: MwrapRack
- Inherits:
-
Object
- Object
- MwrapRack
- Defined in:
- lib/mwrap_rack.rb
Overview
MwrapRack is a standalone Rack application which can be mounted to run within your application process.
Using the Rack::Builder API in config.ru, you can map it to the “/MWRAP/” endpoint. As with the rest of the Mwrap API, your Rack server needs to be spawned with the mwrap(1) wrapper to enable the LD_PRELOAD.
require 'mwrap_rack'
map('/MWRAP') { run(MwrapRack.new) }
map('/') { run(your_normal_app) }
This module is only available in mwrap 2.0.0+
Defined Under Namespace
Modules: HtmlResponse Classes: Each, EachAt, HeapPages
Instance Method Summary collapse
-
#call(env) ⇒ Object
The standard Rack application endpoint for MwrapRack.
-
#r404 ⇒ Object
:nodoc:.
Instance Method Details
#call(env) ⇒ Object
The standard Rack application endpoint for MwrapRack
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/mwrap_rack.rb', line 145 def call(env) case env['PATH_INFO'] when %r{\A/each/(\d+)\z} min = $1.to_i m = env['QUERY_STRING'].match(/\bsort=(\w+)/) Each.new(env['SCRIPT_NAME'], min, m ? m[1] : nil).response when %r{\A/at/(.*)\z} loc = -CGI.unescape($1) loc = Mwrap[loc] or return r404 EachAt.new(loc).response when '/heap_pages' HeapPages.new.response when '/' n = 2000 u = 'https://80x24.org/mwrap/README.html' b = -('<html><head><title>Mwrap demo</title></head>' \ "<body><p><a href=\"each/#{n}\">allocations >#{n} bytes</a>" \ "<p><a href=\"#{u}\">#{u}</a>" \ "<p><a href=\"heap_pages\">heap pages</a>" \ "</body></html>\n") [ 200, {'Content-Type'=>'text/html','Content-Length'=>-b.size.to_s},[b]] else r404 end end |
#r404 ⇒ Object
:nodoc:
140 141 142 |
# File 'lib/mwrap_rack.rb', line 140 def r404 # :nodoc: [404,{'Content-Type'=>'text/plain'},["Not found\n"]] end |