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/http_request.rb,
lib/timber/events/http_response.rb,
lib/timber/events/controller_call.rb,
lib/timber/events/template_render.rb

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"}})


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

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.key?(:type) && obj.key?(:data)
    Events::Custom.new(
      type: obj[:type],
      message: obj[:message],
      data: obj[: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?(:hash) ? obj.hash : obj.to_h # ruby 1.9.3 does not have to_h
    )
  else
    nil
  end
end