Module: Timber::Events

Defined in:
lib/timber/events.rb,
lib/timber/events/custom.rb,
lib/timber/events/exception.rb,
lib/timber/events/sql_query.rb,
lib/timber/events/controller_call.rb,
lib/timber/events/template_render.rb,
lib/timber/events/http_server_request.rb,
lib/timber/events/http_server_response.rb

Overview

Namespace for all Timber supported events.

Defined Under Namespace

Classes: ControllerCall, Custom, Exception, HTTPRequest, HTTPResponse, SQLQuery, TemplateRender

Class Method Summary collapse

Class Method Details

.build(obj) ⇒ Object

Protocol for casting objects into a ‘Timber::Event`.

Examples:

Casting a hash

Timber::Events.build({type: :custom_event, message: "My log message", data: {my: "data"}})


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/timber/events.rb', line 16

def self.build(obj)
  if obj.is_a?(::Timber::Event)
    obj
  elsif obj.respond_to?(:to_timber_event)
    obj.to_timber_event
  elsif obj.is_a?(Hash) && obj.key?(:message) && obj.length == 2
    event = obj.select { |k,v| k != :message }
    type = event.keys.first
    data = event.values.first

    Events::Custom.new(
      type: type,
      message: obj[:message],
      data: data
    )
  elsif obj.is_a?(Struct) && obj.respond_to?(:message) && obj.respond_to?(:type)
    Events::Custom.new(
      type: obj.type,
      message: obj.message,
      data: obj.respond_to?(:to_h) ? obj.to_h : Timber::Util::Struct.to_hash(obj) # ruby 1.9.3 does not have to_h :(
    )
  else
    nil
  end
end