module Shrine::Plugins::Instrumentation::ClassMethods
Public Instance Methods
instrument(event_name, payload = {}, &block)
click to toggle source
Sends a ‘*.shrine` event.
# sends a `my_event.shrine` event Shrine.instrument(:my_event) do # work end
# File lib/shrine/plugins/instrumentation.rb, line 33 def instrument(event_name, payload = {}, &block) payload[:uploader] = self notifications.instrument("#{event_name}.shrine", payload, &block) end
subscribe(event_name, &subscriber)
click to toggle source
Subscribes to a ‘*.shrine` event. It rejects duplicate subscribers.
# subscribes to the `storage_upload.shrine` event Shrine.subscribe(:storage_upload) do |event| event.name #=> :storage_upload event.payload #=> { location: "...", ... } event[:location] #=> "..." event.duration #=> 50 (in milliseconds) end
# File lib/shrine/plugins/instrumentation.rb, line 48 def subscribe(event_name, &subscriber) return if subscriber.nil? return if subscribers[event_name]&.include?(subscriber) notifications.subscribe("#{event_name}.shrine") do |event| subscriber.call(event) if event[:uploader] <= self end subscribers[event_name] ||= [] subscribers[event_name] << subscriber end
Private Instance Methods
notifications()
click to toggle source
# File lib/shrine/plugins/instrumentation.rb, line 62 def notifications Notifications.new(opts[:instrumentation][:notifications]) end
subscribers()
click to toggle source
# File lib/shrine/plugins/instrumentation.rb, line 66 def subscribers opts[:instrumentation][:subscribers] end