Sha256: 5e09a6570f3e10663415b37554f53e285ead09c8ca3e1605dff2736aa6d169d3

Contents?: true

Size: 783 Bytes

Versions: 4

Compression:

Stored size: 783 Bytes

Contents

module CarrierWave
  module Workers
    class Base < Struct.new(:klass, :id, :column)

      def self.perform(*args)
        new(*args).perform
      end

      def perform(*args)
        set_args(*args) if args.present?
        constantized_resource.find id
      rescue *not_found_errors
      end

      private

      def not_found_errors
        [].tap do |errors|
          errors << ::ActiveRecord::RecordNotFound      if defined?(::ActiveRecord)
          errors << ::Mongoid::Errors::DocumentNotFound if defined?(::Mongoid)
        end
      end

      def set_args(klass, id, column)
        self.klass, self.id, self.column = klass, id, column
      end

      def constantized_resource
        klass.is_a?(String) ? klass.constantize : klass
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
carrierwave_backgrounder-0.4.2 lib/backgrounder/workers/base.rb
carrierwave_backgrounder-0.4.1 lib/backgrounder/workers/base.rb
carrierwave_backgrounder-0.4.0 lib/backgrounder/workers/base.rb
carrierwave_backgrounder-0.3.0 lib/backgrounder/workers/base.rb