Sha256: 9b04a5c2a75358126668bcdc6914b09902b3e65a32efb12d7afc4f6620250fa8

Contents?: true

Size: 1.89 KB

Versions: 39

Compression:

Stored size: 1.89 KB

Contents

module Lipsiadmin
  module Attachment
    # Attachment processors allow you to modify attached files when they are
    # attached in any way you are able. Attachment itself uses command-line
    # programs for its included Thumbnail processor, but custom processors
    # are not required to follow suit.
    #
    # Processors are required to be defined inside the Attachment module and
    # are also required to be a subclass of Attachment::Processor. There are
    # only two methods you must implement to properly be a subclass: 
    # #initialize and #make. Initialize's arguments are the file that will
    # be operated on (which is an instance of File), and a hash of options
    # that were defined in has_attached_file's style hash.
    #
    # All #make needs to do is return an instance of File (Tempfile is
    # acceptable) which contains the results of the processing.
    #
    # See Attachment.run for more information about using command-line
    # utilities from within Processors.
    class Processor
      attr_accessor :file, :options

      def initialize(file, options = {})
        @file = file
        @options = options
      end

      def make
      end

      def self.make(file, options = {})
        new(file, options).make
      end
    end

    # Due to how ImageMagick handles its image format conversion and how Tempfile
    # handles its naming scheme, it is necessary to override how Tempfile makes
    # its names so as to allow for file extensions. Idea taken from the comments
    # on this blog post:
    # http://marsorange.com/archives/of-mogrify-ruby-tempfile-dynamic-class-definitions
    class Tempfile < ::Tempfile
      # Replaces Tempfile's +make_tmpname+ with one that honors file extensions.
      def make_tmpname(basename, n)
        extension = File.extname(basename)
        sprintf("%s,%d,%d%s", File.basename(basename, extension), $$, n, extension)
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
lipsiadmin-5.1.6 lib/data_base/attachment/processor.rb
lipsiadmin-5.1.5 lib/data_base/attachment/processor.rb
lipsiadmin-5.1.4 lib/data_base/attachment/processor.rb
lipsiadmin-5.1.3 lib/data_base/attachment/processor.rb
lipsiadmin-5.1.2 lib/data_base/attachment/processor.rb
lipsiadmin-5.1.1 lib/data_base/attachment/processor.rb
lipsiadmin-5.1.0 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.9 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.8 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.7 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.6 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.5 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.4 lib/data_base/attachment/processor.rb
lipsiadmin-4.1.8 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.0 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.1 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.2 lib/data_base/attachment/processor.rb
lipsiadmin-5.0.3 lib/data_base/attachment/processor.rb
lipsiadmin-3.3.1 lib/data_base/attachment/processor.rb
lipsiadmin-2.9 lib/data_base/attachment/processor.rb