Sha256: 376521ee163c96c13f91b1f4fd37a8eab22804a62ddf979dbb43e44ee2bb0c10

Contents?: true

Size: 1.62 KB

Versions: 14

Compression:

Stored size: 1.62 KB

Contents

module Paperclip
  module ProcessorHelpers
    class NoSuchProcessor < StandardError; end

    def processor(name) #:nodoc:
      @known_processors ||= {}
      if @known_processors[name.to_s]
        @known_processors[name.to_s]
      else
        name = name.to_s.camelize
        load_processor(name) unless Paperclip.const_defined?(name)
        processor = Paperclip.const_get(name)
        @known_processors[name.to_s] = processor
      end
    end

    def load_processor(name)
      if defined?(Rails.root) && Rails.root
        filename = "#{name.to_s.underscore}.rb"
        directories = %w(lib/paperclip lib/paperclip_processors)

        required = directories.map do |directory|
          pathname = File.expand_path(Rails.root.join(directory, filename))
          file_exists = File.exist?(pathname)
          require pathname if file_exists
          file_exists
        end

        unless required.any?
          raise LoadError, "Could not find the '#{name}' processor in any of these paths: #{directories.join(', ')}"
        end
      end
    end

    def clear_processors!
      @known_processors.try(:clear)
    end

    # You can add your own processor via the Paperclip configuration. Normally
    # Paperclip will load all processors from the
    # Rails.root/lib/paperclip_processors directory, but here you can add any
    # existing class using this mechanism.
    #
    #   Paperclip.configure do |c|
    #     c.register_processor :watermarker, WatermarkingProcessor.new
    #   end
    def register_processor(name, processor)
      @known_processors ||= {}
      @known_processors[name.to_s] = processor
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
kt-paperclip-7.2.2 lib/paperclip/processor_helpers.rb
kt-paperclip-7.2.1 lib/paperclip/processor_helpers.rb
kt-paperclip-7.2.0 lib/paperclip/processor_helpers.rb
kt-paperclip-6.4.2 lib/paperclip/processor_helpers.rb
kt-paperclip-7.1.1 lib/paperclip/processor_helpers.rb
kt-paperclip-7.1.0 lib/paperclip/processor_helpers.rb
kt-paperclip-7.0.1 lib/paperclip/processor_helpers.rb
kt-paperclip-7.0.0 lib/paperclip/processor_helpers.rb
kt-paperclip-6.4.1 lib/paperclip/processor_helpers.rb
kt-paperclip-6.4.0 lib/paperclip/processor_helpers.rb
kt-paperclip-6.3.0 lib/paperclip/processor_helpers.rb
kt-paperclip-6.2.2 lib/paperclip/processor_helpers.rb
kt-paperclip-6.2.1 lib/paperclip/processor_helpers.rb
kt-paperclip-6.2.0 lib/paperclip/processor_helpers.rb