Sha256: bfe8dff878bf377edb1410590cb394d28ddc3ee01e94a1573a99061407915ed9

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

require 'carrierwave'
require 'active_support'

module CarrierWaveInstrumentation
  ProcessEventName = 'process.carrierwave'.freeze
  StoreEventName = 'store.carrierwave'.freeze
  DownloadEventName = 'download.carrierwave'.freeze

  def process!(*args, &block)
    sanitized_file = args[0]

    payload = {
      filename: sanitized_file.filename,
      original_filename: sanitized_file.original_filename,
      content_type: sanitized_file.content_type,
      size: sanitized_file.size,
      version: version_name || 'default',
      processors: self.class.processors.map {|processor| processor[0] }
    }
    ActiveSupport::Notifications.instrument(ProcessEventName, payload) do
      super *args, &block
    end
  end

  def store!(*args, &block)
    payload = {
      filename: filename,
      original_filename: original_filename,
      content_type: sanitized_file.content_type,
      size: sanitized_file.size,
      version: version_name || 'default'
    }
    ActiveSupport::Notifications.instrument(StoreEventName, payload) do
      super *args, &block
    end
  end

  def download!(*args, &block)
    uri = args[0]

    payload = {
      uri: uri
    }
    ActiveSupport::Notifications.instrument(DownloadEventName, payload) do
      super *args, &block
    end
  end

  CarrierWave::Uploader::Base.send :include, CarrierWaveInstrumentation
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
carrierwave_instrumentation-0.0.2 lib/carrierwave_instrumentation.rb