Module: Puma::Util

Defined in:
lib/puma/util.rb

Defined Under Namespace

Classes: HeaderHash

Constant Summary collapse

DEFAULT_SEP =
/[&;] */n

Class Method Summary collapse

Class Method Details

.nakayoshi_gc(events) ⇒ Object

Version:

  • 5.0.0



27
28
29
30
31
32
33
34
35
# File 'lib/puma/util.rb', line 27

def nakayoshi_gc(events)
  events.log "! Promoting existing objects to old generation..."
  4.times { GC.start(full_mark: false) }
  if GC.respond_to?(:compact)
    events.log "! Compacting..."
    GC.compact
  end
  events.log "! Friendly fork preparation complete."
end

.parse_query(qs, d = nil, &unescaper) ⇒ Object

Stolen from Mongrel, with some small modifications: Parses a query string by breaking it up at the ‘&’ and ‘;’ characters. You can also use this to parse cookies by changing the characters used in the second parameter (which defaults to ‘&;’).



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/puma/util.rb', line 44

def parse_query(qs, d = nil, &unescaper)
  unescaper ||= method(:unescape)

  params = {}

  (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
    next if p.empty?
    k, v = p.split('=', 2).map(&unescaper)

    if cur = params[k]
      if cur.class == Array
        params[k] << v
      else
        params[k] = [cur, v]
      end
    else
      params[k] = v
    end
  end

  params
end

.pipeObject



9
10
11
# File 'lib/puma/util.rb', line 9

def pipe
  IO.pipe
end

.unescape(s, encoding = nil) ⇒ Object



16
17
18
# File 'lib/puma/util.rb', line 16

def unescape(s, encoding = Encoding::UTF_8)
  URI.decode_www_form_component(s, encoding)
end