Sha256: 34371ced85e9fcc36d92697dc8d0f8bf8a9748aabc89a7c446bc9238def9e6c7

Contents?: true

Size: 1.29 KB

Versions: 12

Compression:

Stored size: 1.29 KB

Contents

require 'singleton'

module Paperclip
  class AttachmentRegistry
    include Singleton

    def self.register(klass, attachment_name, attachment_options)
      instance.register(klass, attachment_name, attachment_options)
    end

    def self.clear
      instance.clear
    end

    def self.names_for(klass)
      instance.names_for(klass)
    end

    def self.each_definition(&block)
      instance.each_definition(&block)
    end

    def self.definitions_for(klass)
      instance.definitions_for(klass)
    end

    def initialize
      clear
    end

    def register(klass, attachment_name, attachment_options)
      @attachments ||= {}
      @attachments[klass] ||= {}
      @attachments[klass][attachment_name] = attachment_options
    end

    def clear
      @attachments = Hash.new { |h,k| h[k] = {} }
    end

    def names_for(klass)
      @attachments[klass].keys
    end

    def each_definition
      @attachments.each do |klass, attachments|
        attachments.each do |name, options|
          yield klass, name, options
        end
      end
    end

    def definitions_for(klass)
      parent_classes = klass.ancestors.reverse
      parent_classes.each_with_object({}) do |ancestor, inherited_definitions|
        inherited_definitions.deep_merge! @attachments[ancestor]
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 4 rubygems

Version Path
kt-paperclip-5.4.0 lib/paperclip/attachment_registry.rb
paperclip-6.1.0 lib/paperclip/attachment_registry.rb
paperclip-6.0.0 lib/paperclip/attachment_registry.rb
paperclip-5.3.0 lib/paperclip/attachment_registry.rb
paperclip-5.2.1 lib/paperclip/attachment_registry.rb
paperclip-5.2.0 lib/paperclip/attachment_registry.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/paperclip-5.1.0/lib/paperclip/attachment_registry.rb
paperclip-5.1.0 lib/paperclip/attachment_registry.rb
paperclip-5.0.0 lib/paperclip/attachment_registry.rb
paperclip_jk-5.0.0.beta2 lib/paperclip/attachment_registry.rb
paperclip-5.0.0.beta2 lib/paperclip/attachment_registry.rb
paperclip-5.0.0.beta1 lib/paperclip/attachment_registry.rb