Module: Paperclip

Defined in:
lib/dm-paperclip.rb,
lib/dm-paperclip/style.rb,
lib/dm-paperclip/upfile.rb,
lib/dm-paperclip/version.rb,
lib/dm-paperclip/geometry.rb,
lib/dm-paperclip/callbacks.rb,
lib/dm-paperclip/ext/blank.rb,
lib/dm-paperclip/ext/class.rb,
lib/dm-paperclip/processor.rb,
lib/dm-paperclip/thumbnail.rb,
lib/dm-paperclip/attachment.rb,
lib/dm-paperclip/storage/s3.rb,
lib/dm-paperclip/ext/try_dup.rb,
lib/dm-paperclip/validations.rb,
lib/dm-paperclip/command_line.rb,
lib/dm-paperclip/interpolations.rb,
lib/dm-paperclip/storage/filesystem.rb,
lib/dm-paperclip/storage/s3/aws_library.rb,
lib/dm-paperclip/storage/s3/aws_s3_library.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: Callbacks, ClassMethods, Ext, InstanceMethods, Interpolations, Resource, Storage, Upfile, Validate Classes: Attachment, CommandLine, CommandNotFoundError, Configuration, Geometry, InfiniteInterpolationError, NotIdentifiedByImageMagickError, PaperclipCommandLineError, PaperclipError, Processor, StorageMethodNotFound, Style, Tempfile, Thumbnail

Constant Summary collapse

VERSION =
"2.5.0"
PAPERCLIP_VERSION =
"2.3.8"

Class Method Summary collapse

Class Method Details

.configObject



74
75
76
# File 'lib/dm-paperclip.rb', line 74

def self.config
  @config ||= Configuration.new
end

.config=(config) ⇒ Object



70
71
72
# File 'lib/dm-paperclip.rb', line 70

def self.config=(config)
  @config = config
end

.configure {|@config = Configuration.new| ... } ⇒ Object

To configure Paperclip, put this code in an initializer, Rake task, or wherever:

Paperclip.configure do |config|
  config.root               = Rails.root # the application root to anchor relative urls (defaults to Dir.pwd)
  config.env                = Rails.env  # server env support, defaults to ENV['RACK_ENV'] or 'development'
  config.use_dm_validations = true       # validate attachment sizes and such, defaults to false
  config.processors_path    = 'lib/pc'   # relative path to look for processors, defaults to 'lib/paperclip_processors'
end

Yields:



65
66
67
68
# File 'lib/dm-paperclip.rb', line 65

def self.configure
  yield @config = Configuration.new
  Paperclip.config = @config
end

.each_instance_with_attachment(klass, name) ⇒ Object



185
186
187
188
189
# File 'lib/dm-paperclip.rb', line 185

def each_instance_with_attachment(klass, name)
  Object.const_get(klass).all.each do |instance|
    yield(instance) if instance.send(:"#{name}?")
  end
end

.included(base) ⇒ Object

:nodoc:



169
170
171
172
173
174
# File 'lib/dm-paperclip.rb', line 169

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

.interpolates(key, &block) ⇒ Object



141
142
143
# File 'lib/dm-paperclip.rb', line 141

def interpolates key, &block
  Paperclip::Interpolations[key] = block
end

.log(message) ⇒ Object

Log a paperclip-specific line. Uses ActiveRecord::Base.logger by default. Set Paperclip.options to false to turn off.



193
194
195
# File 'lib/dm-paperclip.rb', line 193

def log message
  logger.info("[paperclip] #{message}") if logging?
end

.loggerObject

:nodoc:



197
198
199
# File 'lib/dm-paperclip.rb', line 197

def logger #:nodoc:
  DataMapper.logger
end

.logging?Boolean

:nodoc:

Returns:

  • (Boolean)


201
202
203
# File 'lib/dm-paperclip.rb', line 201

def logging? #:nodoc:
  options[:log]
end

.optionsObject

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

  • whiny: 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.



122
123
124
125
126
127
128
129
130
131
# File 'lib/dm-paperclip.rb', line 122

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

.path_for_command(command) ⇒ Object

:nodoc:



133
134
135
136
137
138
139
# File 'lib/dm-paperclip.rb', line 133

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:



176
177
178
179
180
181
182
183
# File 'lib/dm-paperclip.rb', line 176

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

.require_processorsObject



78
79
80
81
82
83
84
# File 'lib/dm-paperclip.rb', line 78

def self.require_processors
  return if @processors_already_required
  Dir.glob(File.expand_path("#{Paperclip.config.processors_path}/*.rb")).sort.each do |processor|
    require processor
  end
  @processors_already_required = true
end

.run(cmd, *params) ⇒ Object

The run method takes a command to execute and an array 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. These codes should be passed as a hash as the last argument, like so:

Paperclip.run("echo", "something", :expected_outcodes => [0,1,2,3])

This method can log the command being run when Paperclip.options is set to true (defaults to false). This will only log if logging in general is set to true as well.



161
162
163
164
165
166
167
# File 'lib/dm-paperclip.rb', line 161

def run cmd, *params
  if options[:image_magick_path]
    Paperclip.log("[DEPRECATION] :image_magick_path is deprecated and will be removed. Use :command_path instead")
  end
  CommandLine.path = options[:command_path] || options[:image_magick_path]
  CommandLine.new(cmd, *params).run
end