Class: Puma::Events
Overview
The default implement of an event sink object used by Server for when certain kinds of events occur in the life of the server.
The methods available are the events that the Server fires.
Direct Known Subclasses
Constant Summary collapse
- DEFAULT =
new(STDOUT, STDERR)
Constants included from Const
Const::CGI_VER, Const::CHUNK_SIZE, Const::CLOSE, Const::CLOSE_CHUNKED, Const::CODE_NAME, Const::COLON, Const::CONNECTION_CLOSE, Const::CONNECTION_KEEP_ALIVE, Const::CONTENT_LENGTH, Const::CONTENT_LENGTH2, Const::CONTENT_LENGTH_S, Const::CONTENT_TYPE, Const::DATE, Const::ERROR_400_RESPONSE, Const::ERROR_404_RESPONSE, Const::ERROR_500_RESPONSE, Const::ERROR_503_RESPONSE, Const::ETAG, Const::ETAG_FORMAT, Const::FAST_TRACK_KA_TIMEOUT, Const::FIRST_DATA_TIMEOUT, Const::GATEWAY_INTERFACE, Const::GET, Const::HALT_COMMAND, Const::HEAD, Const::HIJACK, Const::HIJACK_IO, Const::HIJACK_P, Const::HOST, Const::HTTP, Const::HTTPS, Const::HTTPS_KEY, Const::HTTP_10, Const::HTTP_10_200, Const::HTTP_11, Const::HTTP_11_200, Const::HTTP_CONNECTION, Const::HTTP_HOST, Const::HTTP_IF_MODIFIED_SINCE, Const::HTTP_IF_NONE_MATCH, Const::HTTP_VERSION, Const::HTTP_X_FORWARDED_FOR, Const::KEEP_ALIVE, Const::LAST_MODIFIED, Const::LINE_END, Const::LOCALHOST, Const::MAX_BODY, Const::MAX_HEADER, Const::NEWLINE, Const::PATH_INFO, Const::PERSISTENT_TIMEOUT, Const::PORT_443, Const::PORT_80, Const::PUMA_CONFIG, Const::PUMA_SOCKET, Const::PUMA_TMP_BASE, Const::PUMA_VERSION, Const::RACK_AFTER_REPLY, Const::RACK_INPUT, Const::RACK_URL_SCHEME, Const::REDIRECT, Const::REMOTE_ADDR, Const::REQUEST_METHOD, Const::REQUEST_PATH, Const::REQUEST_URI, Const::RESTART_COMMAND, Const::SCRIPT_NAME, Const::SERVER_NAME, Const::SERVER_PORT, Const::SERVER_PROTOCOL, Const::SERVER_SOFTWARE, Const::SLASH, Const::STATUS_FORMAT, Const::STOP_COMMAND, Const::TRANSFER_ENCODING, Const::TRANSFER_ENCODING_CHUNKED
Instance Attribute Summary collapse
-
#stderr ⇒ Object
readonly
Returns the value of attribute stderr.
-
#stdout ⇒ Object
readonly
Returns the value of attribute stdout.
Class Method Summary collapse
- .stdio ⇒ Object
-
.strings ⇒ Object
Returns an Events object which writes it’s status to 2 StringIO objects.
Instance Method Summary collapse
- #debug(str) ⇒ Object
-
#error(str) ⇒ Object
Write
str
to @stderr. -
#fire(hook, *args) ⇒ Object
Fire callbacks for the named hook.
- #fire_on_booted! ⇒ Object
-
#initialize(stdout, stderr) ⇒ Events
constructor
Create an Events object that prints to
stdout
andstderr
. -
#log(str) ⇒ Object
Write
str
to @stdout. - #on_booted(&b) ⇒ Object
-
#parse_error(server, env, error) ⇒ Object
An HTTP parse error has occured.
-
#register(hook, obj = nil, &blk) ⇒ Object
Register a callbock for a given hook.
-
#unknown_error(server, error, kind = "Unknown") ⇒ Object
An unknown error has occured.
- #write(str) ⇒ Object
Constructor Details
#initialize(stdout, stderr) ⇒ Events
Create an Events object that prints to stdout
and stderr
.
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/puma/events.rb', line 16 def initialize(stdout, stderr) @stdout = stdout @stderr = stderr @stdout.sync = true @stderr.sync = true @debug = ENV.key? 'PUMA_DEBUG' @on_booted = [] @hooks = Hash.new { |h,k| h[k] = [] } end |
Instance Attribute Details
#stderr ⇒ Object (readonly)
Returns the value of attribute stderr.
30 31 32 |
# File 'lib/puma/events.rb', line 30 def stderr @stderr end |
#stdout ⇒ Object (readonly)
Returns the value of attribute stdout.
30 31 32 |
# File 'lib/puma/events.rb', line 30 def stdout @stdout end |
Class Method Details
Instance Method Details
#debug(str) ⇒ Object
62 63 64 |
# File 'lib/puma/events.rb', line 62 def debug(str) log("% #{str}") if @debug end |
#error(str) ⇒ Object
Write str
to @stderr
68 69 70 71 |
# File 'lib/puma/events.rb', line 68 def error(str) @stderr.puts "ERROR: #{str}" exit 1 end |
#fire(hook, *args) ⇒ Object
Fire callbacks for the named hook
34 35 36 |
# File 'lib/puma/events.rb', line 34 def fire(hook, *args) @hooks[hook].each { |t| t.call(*args) } end |
#fire_on_booted! ⇒ Object
99 100 101 |
# File 'lib/puma/events.rb', line 99 def fire_on_booted! @on_booted.each { |b| b.call } end |
#log(str) ⇒ Object
Write str
to @stdout
54 55 56 |
# File 'lib/puma/events.rb', line 54 def log(str) @stdout.puts str end |
#on_booted(&b) ⇒ Object
95 96 97 |
# File 'lib/puma/events.rb', line 95 def on_booted(&b) @on_booted << b end |
#parse_error(server, env, error) ⇒ Object
An HTTP parse error has occured. server
is the Server object, env
the request, and error
a parsing exception.
77 78 79 80 |
# File 'lib/puma/events.rb', line 77 def parse_error(server, env, error) @stderr.puts "#{Time.now}: HTTP parse error, malformed request (#{env[HTTP_X_FORWARDED_FOR] || env[REMOTE_ADDR]}): #{error.inspect}" @stderr.puts "#{Time.now}: ENV: #{env.inspect}\n---\n" end |
#register(hook, obj = nil, &blk) ⇒ Object
Register a callbock for a given hook
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/puma/events.rb', line 40 def register(hook, obj=nil, &blk) if obj and blk raise "Specify either an object or a block, not both" end h = obj || blk @hooks[hook] << h h end |
#unknown_error(server, error, kind = "Unknown") ⇒ Object
An unknown error has occured. server
is the Server object, env
the request, error
an exception object, and kind
some additional info.
86 87 88 89 90 91 92 93 |
# File 'lib/puma/events.rb', line 86 def unknown_error(server, error, kind="Unknown") if error.respond_to? :render error.render "#{Time.now}: #{kind} error", @stderr else @stderr.puts "#{Time.now}: #{kind} error: #{error.inspect}" @stderr.puts error.backtrace.join("\n") end end |
#write(str) ⇒ Object
58 59 60 |
# File 'lib/puma/events.rb', line 58 def write(str) @stdout.write str end |