Module: Paperclip

Defined in:
lib/paperclip.rb,
lib/paperclip/upfile.rb,
lib/paperclip/storage.rb,
lib/paperclip/geometry.rb,
lib/paperclip/processor.rb,
lib/paperclip/thumbnail.rb,
lib/paperclip/attachment.rb,
lib/paperclip/callback_compatability.rb,
lib/paperclip/matchers/have_attached_file_matcher.rb,
lib/paperclip/matchers/validate_attachment_size_matcher.rb,
lib/paperclip/matchers/validate_attachment_presence_matcher.rb,
lib/paperclip/matchers/validate_attachment_content_type_matcher.rb

Overview

The base module that gets included in ActiveRecord::Base. See the documentation for Paperclip::ClassMethods for more useful information.

Defined Under Namespace

Modules: CallbackCompatability, ClassMethods, InstanceMethods, Shoulda, Storage, Upfile Classes: Attachment, Geometry, NotIdentifiedByImageMagickError, PaperclipCommandLineError, PaperclipError, Processor, Tempfile, Thumbnail

Constant Summary collapse

VERSION =
"2.2.6"

Class Method Summary collapse

Class Method Details

.bit_bucketObject

:nodoc:



99
100
101
# File 'lib/paperclip.rb', line 99

def bit_bucket #:nodoc:
  File.exists?("/dev/null") ? "/dev/null" : "NUL"
end

.included(base) ⇒ Object

:nodoc:



103
104
105
106
107
108
# File 'lib/paperclip.rb', line 103

def included base #:nodoc:
  base.extend ClassMethods
  unless base.respond_to?(:define_callbacks)
    base.send(:include, Paperclip::CallbackCompatability)
  end
end

.interpolates(key, &block) ⇒ Object



76
77
78
# File 'lib/paperclip.rb', line 76

def interpolates key, &block
  Paperclip::Attachment.interpolations[key] = block
end

.optionsObject

Provides configurability to Paperclip. There are a number of options available, such as:

  • whiny_thumbnails: Will raise an error if Paperclip cannot process thumbnails of an uploaded image. Defaults to true.

  • log: Logs progress to the Rails log. Uses ActiveRecord’s logger, so honors log levels, etc. Defaults to true.

  • command_path: Defines the path at which to find the command line programs if they are not visible to Rails the system’s search path. Defaults to nil, which uses the first executable found in the user’s search path.

  • image_magick_path: Deprecated alias of command_path.



58
59
60
61
62
63
64
65
66
# File 'lib/paperclip.rb', line 58

def options
  @options ||= {
    :whiny_thumbnails  => true,
    :image_magick_path => nil,
    :command_path      => nil,
    :log               => true,
    :swallow_stderr    => true
  }
end

.path_for_command(command) ⇒ Object

:nodoc:



68
69
70
71
72
73
74
# File 'lib/paperclip.rb', line 68

def path_for_command command #:nodoc:
  if options[:image_magick_path]
    warn("[DEPRECATION] :image_magick_path is deprecated and will be removed. Use :command_path instead")
  end
  path = [options[:command_path] || options[:image_magick_path], command].compact
  File.join(*path)
end

.processor(name) ⇒ Object

:nodoc:



110
111
112
113
114
115
116
117
# File 'lib/paperclip.rb', line 110

def processor name #:nodoc:
  name = name.to_s.camelize
  processor = Paperclip.const_get(name)
  unless processor.ancestors.include?(Paperclip::Processor)
    raise PaperclipError.new("Processor #{name} was not found") 
  end
  processor
end

.run(cmd, params = "", expected_outcodes = 0) ⇒ Object

The run method takes a command to execute and a string of parameters that get passed to it. The command is prefixed with the :command_path option from Paperclip.options. If you have many commands to run and they are in different paths, the suggested course of action is to symlink them so they are all in the same directory.

If the command returns with a result code that is not one of the expected_outcodes, a PaperclipCommandLineError will be raised. Generally a code of 0 is expected, but a list of codes may be passed if necessary.



89
90
91
92
93
94
95
96
97
# File 'lib/paperclip.rb', line 89

def run cmd, params = "", expected_outcodes = 0
  command = %Q<#{%Q[#{path_for_command(cmd)} #{params}].gsub(/\s+/, " ")}>
  command = "#{command} 2>#{bit_bucket}" if Paperclip.options[:swallow_stderr]
  output = `#{command}`
  unless [expected_outcodes].flatten.include?($?.exitstatus)
    raise PaperclipCommandLineError, "Error while running #{cmd}"
  end
  output
end